Как я могу диагностировать и исправить мои нелепо долгие времена сборки Метеора?

1

У меня есть приложение для малого и среднего размера, использующее метеор 1.5, реакцию и сокращение. Долгое время я испытывал ужасающие моменты запуска около 3-4 минут. В моем приложении используются пакеты npm, пакеты метеоров и локальные пакеты метеоров. Мне удалось удалить кучу ненужных локальных пакетов, и я получил время сборки до 2+ минут, но это не продлилось, и теперь это до буквально 20 минут.

Я пробовал использовать профилировщик метеоров много раз, и, хотя время, которое он сообщает, по-прежнему само по себе неприемлемо, они намного короче, чем фактическое время загрузки. Основная часть ожидания начинается между завершением шага "prepareProjectForBuild" и началом этапа "Создание приложения", где профилировщик ничего не выводит. Когда шаг "Build App" завершается, он утверждает, что занял около 200 секунд. Тем не менее, время от времени наступает время ИМО, но я бы убил его в этот момент.

Показать ещё 1 комментарий
Теги:
meteor
npm

1 ответ

0

У меня есть проект аналогичного размера и сжимают время сборки примерно до 1 мин. Я могу только сказать вам из моего опыта, что я сделал, чтобы сократить время сборки:

A - Кодовые соображения

1. Переместить как можно больше "ручной" код в заводские методы

Это означает, что аналогичный код создания, который много повторяет, может быть легко сведен к нескольким функциям фабрики. Это также улучшает охват тестированием.

Куда:

  • особенно создания коллекций. Большинство коллекций отличаются только их схемой и некоторыми частными случаями пабов/методов. Много кода повторяется.
  • схема
  • общие публикации (например, только название и идентификатор, что часто встречается)
  • методы, которые следуют определенной "стандартной" схеме
  • любой повторяющийся шаблон объектов, созданных во время выполнения

2. Не возитесь с тысячами круговых импортных

Это не разрушает ваше приложение. Но сохранение четкой и инкапсулированной структуры может сократить время поиска на импорт. Делает ваш код более удобным для обслуживания.

3. Переместите файлы ресурсов из вашего проекта

Я знаю, что это сложно, особенно когда структуры с течением времени затягиваются. Но когда мне пришлось переместить все мои файлы активов в cdn и ссылаться только на пути, которые он дал хороший импульс для моего времени сборки.

4. Зависимости Npm в пакетах

Вместо жесткой проводки npm в ваших пакетах (или тех, где вы находитесь под контролем) вы можете использовать

tmeasday:check-npm-versions

для мягкого обращения к ним, чтобы ваше приложение метеоритов отвечало за их управление, уменьшая количество попыток npm для пакетов dedupe.

5. Переместитесь на галлон, где это возможно

Придет время, когда метеор в любом случае переместится на галлон. Поэтому сделайте пакеты пакетов npm, где это возможно, и сохраните время сборки позже.

редактировать:..................................................

6. Извлеките сервисы из своего приложения в автономные службы

Когда у вас есть службы, которые обслуживают только одну функцию, выведите их из своего приложения. Это может применяться для:

  • нотариальные услуги
  • двигатели (рабочие процессы, технологические процессы)
  • регистрация/отслеживание
  • простые транзакции
  • admin (обычно в любом случае просто манипулирует коллекциями)
  • другие части приложения, которые обслуживают только административные цели

..................................................

B - Другие соображения

1. Не разрабатывайте метеор в Windows (если вам не нужно)

Этот совет немного испорчен, потому что я не могу сказать вам, почему, но я видел на нескольких машинах (мой собственный, vm, коллеги, на рабочем месте) способ медленного обновления, сборки и сборки пакетов, чем на Linux или Mac. Компиляция собственного кода, такого как bcrypt, здесь медленно, как черт. Может быть, у кого-то есть понимание?

2. SSD делает все быстрее

Здравый смысл уже.

Примечание. Я не могу сказать, насколько хорошим является повышение одним из описанных методов. Я просто пробовал все это с течением времени и со временем стал хорошим.

  • 0
    Спасибо за советы! К сожалению, для меня это была проблема с метеором. Я удалил все свои метеорные файлы и запустил новый проект, и теперь все работает прекрасно

Ещё вопросы

Сообщество Overcoder
Наверх
Меню