webpack общие куски плагин против webpack dll плагин
прежде чем я использовал плагин webpack common chunks для создания пакета поставщиков, содержащего сторонние библиотеки, такие как angular, react, lodash и т. д., Но тогда я знал о плагине dll webpack. Они, кажется, делают то же самое, но DLL плагин также позволяет сократить время сборки. Поэтому я смущен, нужно ли мне использовать оба этих плагина вместе. Должен ли я использовать плагин common chunks для создания пакета поставщиков в производственной сборке и DLL-плагина в сборке разработки. Или я должен использовать DLL-плагинов как в производстве, так и развитие строит? Не могли бы вы объяснить это?
3 ответов
извините за длинный ответ, но будем надеяться, что это поможет сделать вещи яснее.
CommonsChunkPlugin обоснование
автор проекта определяет ряд точек входа приложения, которые будут создавать пакет каждый. Типичными примерами являются поставщик, polyfills, main, но, например, ваше приложение может быть разделено на несколько независимых "областей", которые имеет смысл загружать отдельно (например, login, main, settings).
затем автор определяет, какой из этих пакетов или отдельный, должен содержать общий для всех них код. Это типично сторонние библиотеки и ваши собственные общие утилиты во всех точках входа.тогда ответственность плагина за анализ и сбор такого общего кода, а затем поместить его в определенный пакет. Весь такой анализ и работа происходит снова и снова каждый раз, когда вы начинаете новую сборку, и-в режиме просмотра - когда вы изменяете код, который является общим и попадает в Коммонс пакет.
такое разделение полезно как для сборки разработки, так и для производственной сборки. Но для среды разработки давайте просто скажем, что перестройка кода, связанного с поставщиками и polyfills, может занять довольно много времени, и это может быть пустой тратой, когда вы на самом деле не меняете эти части (предполагая, что сторонний код, от которого вы зависите, больше, чем ваша собственная кодовая база).
DllPlugin обоснование
учитывая ту же среду, например, разработка, проект автор создает два конфигурации webpack, где раньше был один. Плагин может быть применен к производственной среде, хотя можно сказать, что DllPlugin имеет больше смысла в разработке (см. ниже).
первая конфигурация сборки webpack необходима для так называемого библиотеки, которые близки к коду общего пользования, который видели раньше,но не совсем. Насколько я понимаю, DLL в основном склонны группировать сторонний код (поставщик и polyfills), а не ваш собственный общий код утилиты, но опять же это скорее впечатление, а не строгое правило. Во всяком случае, здесь Автор проекта должен группировать код, который меняется гораздо реже во время обычного сеанса разработки. Идея в среде dev заключается в том, чтобы запускать эту сборку время от времени, например, при изменении зависимости. И обычно это зависит от разработчика, чтобы запустить эту сборку, когда он / она думает, что это необходимо.
другая конфигурация сборки webpack необходима для собственного кода проекта или в любом случае код, который регулярно меняется во время работы dev. Это фактическая сборка, которую разработчик будет запускать снова и снова или будет работать в режиме просмотра, и на данный момент она должна быть намного быстрее по сравнению с одной сборкой, замеченной в сценарии CommonsChunk.
Итак, в целом, они кажутся похожими, но они позволяют вам поражать разные цели. Настолько, что вы могли бы рассмотреть возможность использования DllPlugin для вашей среды разработки( преимущество: короткое время компиляции), используя CommonsChunkPlugin для производство (преимущество: короткое время загрузки при изменении приложения). Опять же, вы также можете использовать DllPlugin также в производстве, с небольшим неудобством запуска двух сборок подряд: одна для DLL, следующая для приложения.
HTH
вы используете один или другой. вот статья, который описывает, как использовать DllPlugin и внизу страницы вы можете увидеть альтернативные методы выполнения того же самого. Он говорит вам, каковы различия, а также преимущества и недостатки. Это должно помочь тебе начать.
Я тоже искал разницу здесь, но я действительно не думаю, что это так. По крайней мере, теперь.
Если вы посмотрите на webpack documenation для библиотек разделения кода он упоминает способ извлечения аналогичного файла манифеста. От моего понимания, это то, что DllPlugin делает, кроме чуть больше неявных с CommonsChunkPlugin.
выгода в том, что вам не нужно поддерживать несколько Webpack конфигурации для такого рода функций.