Рубрики
Без рубрики

Настраивание вручную настроек сборки WebPack

By Jamund Ferguson вручную настраивая WebPack Buildsback в апреле я перешел в роль платформы / архитектора в своей работе в PayPal. Я был поручено взглянуть на стабильность, производительность и качество. Одна из первых вещей, которые я сделал, был график нашим размерам пакета JavaScript со временем. После пары

Автор оригинала: FreeCodeCamp Community Member.

By Jamund Ferguson

Вернувшись в апреле я перешел в роль платформы/архитектора в своей работе в PayPal. Я был поручено взглянуть на стабильность, производительность и качество. Одна из первых вещей, которые я сделал, был график нашим размерам пакета JavaScript со временем.

Через пару недель я заметил несколько баллов, у нас были довольно большие шипы в нашем размере сборки, которые добавляли до почти 1 МБ. Глядя в него, я обнаружил, что мы были дублированы вещами повсюду.

NPM позволяет очень легко установить много версий модулей. Это хорошо в сервере Code, но при объединении к сети это большая проблема. WebPack предоставляет некоторые основные инструменты для проверки встроенных файлов, но ощущение того, что данные требуют нескольких дополнительных команд оболочки:

Позвольте мне идти по тебе через то, что здесь происходит:

  • Дисплей-модули это флаг на WebPack Это будет демонстрировать модули узлов, вытянутых в комплект.
  • awk Перекажите столбцы и удаляют ненужную информацию.
  • Греп Удаляет действительно маленькие файлы с вывода.
  • Сортировать -n ставит самые большие файлы внизу
  • хвост только показывает последний (самый большой) 100.

И с этой магией вы получаете список, как это:

Редактировать: Оказывается, что-то вроде это встроено в учебный папак.

webpack --display-modules --sort-modules-by size

Вывод немного Мессер, но он делает заказывает вещи правильно!

Расследование источника дублирования

Как только вы подозреваете, что у вас есть более одной версии модуля, используйте NPM Ls Чтобы определить, как этот модуль включен в ваш проект.

В то время как NPM Ls Показывает все в вашем Node_Modules Папка, WebPack не может быть включать в себя каждый из этих файлов в комплекте. Он включает в себя только файлы, которые являются требовать () ‘D где-то в вашем коде.

Остановка дублирования безумии

На данный момент вы, вероятно, чувствуете себя немного усталости терминала. Вы набрали много команд, но как вы на самом деле обрезаете свою сборку?

В приведенном выше примере этот проект напрямую полагается на Реагировать 15, Но одна из его зависимостей опирается на racted-intl @ 1.2.2 который имеет зависимость от Реагировать 0,13 Отказ

Решение в этом случае было замена нашей зависимости от racted-intl С библиотекой интернационализации, которая поддержала более новую версию реагирования. Это было нетривиальное количество работы, поскольку мы фактически заканчивались написанием упрощенной альтернативы.

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

Мой Лодаш слишком большой

244kB  /Users/.../dev/paypal/web/~/lodash/dist/lodash.compat.js

Существует несколько плагинов, которые могут настроить свой Lodash Builds, чтобы включить патенты, которые вы на самом деле используете. Это может обеспечить драматическое уменьшение размера файлов. Если вы используете Babel, я бы предложил https://github.com/lodash/babel-plugin-lodash Или, если нет, вы можете попробовать https://github.com/lodash/lodash-webpack-plugin Отказ

Прежде чем эти плагины пришли на самом деле, мы на самом деле использовали Eslint без ограничения – модуль Правило запретить Лоташ от нашего Публичный/ папка (в пользу подчеркивания). Это просто мешает нам привлечь их обоих в проект.

У меня слишком много jQuery’s

259kB  /Users/jamuferguson/dev/paypal/web/~/jquery/dist/jquery.js273kB  ./lib/jquery-1.10.2.js

В этом случае у нас есть локальная версия jQuery, которую мы использовали навсегда, которые мы псевдонимы, но тогда у нас также есть другой модуль, который явно зависит от последней версии jQuery.

Самое простое исправление для этого – это удалить локальную копию и полагаться на версию, установленную в NPM. Всегда используйте последнюю версию, которую вы, возможно, можете так же, как и будущие зависимости, могут также использовать эту версию.

Что, если вы не можете обновить до последней версии jQuery из-за проблем совместимости браузера? Попробуйте jquery мигрирует плагин Если это проблема для вас или поощряет сопровождающие модуля (через проблему GitHub), чтобы быть более включенным в их package.json file.

"jquery": "^1 || ^2"

Этот синтаксис позволяет пакет полагаться на версию 1 или версию 2. Во многих случаях это позволит обратная совместимость, которая вам нужна.

Раздавить его

Моя команда смогла уменьшить размер файла нашего Министерство JavaScript Bundle почти на 800 КБ, используя эти методы. Другие сообщили о Успех сокращающий момент .js на сотни КБ с помощью плагинов в УБП.

У вас есть проблемы с учетом вашего WebPack Builds Mall? Какие другие подходы вы видели, чтобы сохранить размер сборки?

Оригинал: “https://www.freecodecamp.org/news/manually-tuning-webpack-builds-284923f47f44/”