Как оптимизировать время сборки webpack с помощью инструмента prefetchPlugin & analyse?
предыдущие исследования:
как говорит Вики webpack, можно использовать инструмент анализа для оптимизации производительности сборки:
от: https://github.com/webpack/docs/wiki/build-performance#hints-from-build-stats
подсказки из статистики сборки
есть анализировать инструмент которые визуализируют вашу сборку, а также обеспечивает некоторые намекают, как размер сборки и производительность сборки могут быть оптимизировано.
вы можете создать необходимый файл JSON, запустив webpack --profile -- json > статистика.json
Я создаю файл статистики (здесь)
загрузил его в инструмент analize webpack
и под подсказки tab
Я сказал использовать prefetchPlugin:
от:http://webpack.github.io/analyse/#hints
длиннее строение модуля цепи
использовать предварительную выборку для повышения производительности сборки. Предварительная выборка модуля из средние цепочки.
я вырыл интернет наизнанку, чтобы найти единственную документацию, доступную на prefechPlugin, это:
от:https://webpack.github.io/docs/list-of-plugins.html#prefetchplugin
PrefetchPlugin
new webpack.PrefetchPlugin([context], request)
запрос на обычный модуль, который разрешен и построен еще раньше а требование к нему возникает. Это может повысить производительность. попробуйте профилировать постройте сначала, чтобы определить умные точки предварительной выборки.
мои вопросы:
- Как правильно использовать prefetchPlugin?
- каков правильный рабочий процесс для использования это с инструментом анализа?
- как узнать, работает ли prefetchPlugin? как я могу его измерить?
- , что значит предварительная выборка модуля из середины цепочки?
Я буду очень признателен за некоторые примеры
пожалуйста, помогите мне сделать этот вопрос ценным ресурсом для следующего разработчика, который хочет использовать prefechPlugin и инструменты анализа. Спасибо.
2 ответа:
да, документация по плагину pre-fetch практически не существует. После выяснения этого для себя, его довольно простой в использовании, и нет большой гибкости к нему. В принципе, он принимает два аргумента, контекст (необязательно) и путь модуля (относительно контекста). Контекст в вашем случае будет
/absolute/path/to/your/project/node_modules/react-transform-har/
предполагая, что Тильда на вашем скриншоте относится кnode_modules
согласно webpack разрешение node_module.фактический модуль предварительной выборки в идеале должно быть не более трех глубоких зависимостей модулей. Так что в вашем случае
isFunction.js
это модуль с длинной цепочкой сборки, и в идеале он должен быть предварительно выбран вgetNative.js
однако я подозреваю, что в вашей конфигурации есть что-то фанковое, потому что ваши зависимости цепочки сборки ссылаются на зависимости модулей, которые должны быть автоматически оптимизированы webpack. Я не уверен, как вы это получили, но в нашем случае мы не видим никаких предупреждений о длинных цепях сборки папки node_modules. Большинство наших длинных цепочек сборки связаны с глубоко вложенными компонентами react, которые требуют scss. т. е.:
независимо от того, вы хотите добавить новый плагин для каждого из предупреждений, например:
plugins: [ new webpack.PrefetchPlugin('/web/', 'app/modules/HeaderNav.jsx'), new webpack.PrefetchPlugin('/web/', 'app/pages/FrontPage.jsx') ];
второй аргумент должен быть строкой к относительному расположению модуля. Надеюсь, это имеет смысл.