Должны ли пакеты JavaScript npm быть минимизированы?

1

Я создал довольно много пакетов npm, но я до сих пор не знаю правильного ответа на этот вопрос: "Должны ли быть уменьшены пакеты jpm jpm?"

Я всегда понимал, что минимизация минифицированного кода - плохая идея, поэтому не делал этого в моих пакетах npm. Тем не менее, я вижу, что некоторые npm-пакеты axios, стилизованные компоненты предоставляют мини-версии своих файлов "dist" наряду с неминифицированными версиями, в то время как Lodash этого не делает.

Что правильно? Кто будет использовать сокращенные версии?

  • 1
    Я думаю, что это сводится к вопросу мнения, так как нет «правильного» ответа (и проголосовал за закрытие по этой причине) - но если бы я выпускал пакеты, я бы сделал оба доступных ... минимизированными для повышения производительности и не минимизировано для отладки.
  • 1
    Сокращение Javascript обычно выгодно для веб-браузеров на медленных соединениях. Поскольку node.js обычно запускается на сервере, а файл сохраняется на сервере, вы не загружаете скрипт при его выполнении.
Показать ещё 2 комментария
Теги:
npm

1 ответ

3
Лучший ответ

Все зависит от среды ваших потребителей пакетов


NodeJS

Для аудитории NodeJS ваш пакет не обязательно должен быть минимизирован, поскольку время выполнения узлов обычно имеет прямой доступ к node_modules папке node_modules. Сетевые передачи не требуются, и до запуска кода не выполняется никаких дополнительных преобразований кода.


Бундлеры/строить трубопроводы

Для потребления через среду dev, которая использует комплектщик в своем конвейере сборки, ваш пакет лучше всего не минимизировать. В большинстве случаев потребители пакетов реализуют собственный процесс минимизации. Кроме того, при предоставлении полного формата модуля, например:

  • дерево зависимостей реализации кодовых баз может быть гораздо лучше проанализировано
  • Общие зависимости между пакетами на самом деле являются одинаковыми символами для всех таких пакетов (модули являются "одиночными")

Вышеприведенное утверждение основывается на предположении, что при включении нескольких исходных файлов для минимизации предшествует процесс связывания. В настоящее время редко выделяются отдельные модули. Если вы предоставляете отдельные модули, например, для среды выполнения RequireJS в браузере, минимизация по-прежнему актуальна, так как эти файлы извлекаются по сети.


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

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

Для плагинов/расширений для фреймворков, таких как Angular, Vue, Ember и т.д., Обычно не нужно минимизировать ваш код, поскольку все они реализуют собственный конвейер сборки, часто через cli.


Скриптовые теги /CDN

Это случаи, в которых минимизация ориентирована в первую очередь. Если вы размещаете файл на CDN или предоставляете его для прямого использования тега <script>, то, что вы видите, это то, что вы получаете. В обоих случаях файл должен пройти по сети. Minification сохраняет байты.


Минимизация против транспиляции

Между этими двумя должно быть очень важное различие. Хотя минификация не всегда необходима, как правило, ваша ответственность transpile любого кода, который вряд ли будет 100% совместимостью с целевой средой вашего пакета аудитории. Это включает:

  • Передача нового синтаксиса ES20XX для - возможно - ES5
  • Полифинирование любых ES20XX API ES20XX

Минимизация и комплектация

Если ваш пакет состоит из одного пакета вместо нескольких отдельных модулей, минимализация всегда является безопасной ставкой. Так как связующее никогда не будет пытаться ничего смешного с помощью одного модуля/объекта (например, дрожания дерева), скорее всего, ваш код будет технически не изменяться вообще каким-либо процессом сборки.


отладка

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

Ещё вопросы

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