WebPack: несколько точек входа без дополнительных блоков

Я хочу использовать WebPack для создания своего приложения JavaScript. Приложение предполагается развернуть на нескольких площадках, в нескольких разных модификациях. Поэтому я настроил конфиг на использование нескольких точек входа, по одной на каждый сайт:

entry: {
  s1: "s1",
  s2: "s2",
  s3: "s3"
},

Приложение также использует несколько зависимостей, которые загружаются через модули AMD (раньше я использовал RequireJS):

c1
c2
...

Допустим, для s1 требуются и c1, и c2, тогда как для s2 нужен только c1. Сборка работает нормально, и она создает s1, s2 и s3 в качестве точек входа, а также несколько чанков, содержащих различные комбинации компонентов, как того требуют сайты:

/* s1 */
define(['c1', 'c2'], function(c1, c2) { ... }

У меня есть вопрос: что мне нужно указать в конфигурации, чтобы каждый пакет сайта был собран как один автономный файл? Я ценю способность WebPack разбивать приложение на куски, но сейчас мне нужно, чтобы каждая сборка была одним JS-файлом (по разным причинам).

Я могу легко добиться этого, настроив только одну точку входа (например, entry: "s1"), используя следующее:

webpack.optimize.LimitChunkCountPlugin({maxChunks: 1})

Однако для нескольких точек входа эта конфигурация создает один дополнительный фрагмент поверх всех точек входа. Как я могу убедиться, что каждая созданная точка входа (например, s1.bundle.js, s2.bundle.js,...) содержит весь JavaScript внутри этого одного файла и не требует загрузки каких-либо фрагментов по запросу?


person Pavel S.    schedule 01.03.2016    source источник


Ответы (1)


Похоже, самый простой способ — иметь несколько сборок (каждая с одной точкой входа), а не одну сборку с несколькими точками входа. Если ваш webpack.config.js экспортирует массив объектов конфигурации вместо одного объекта конфигурации, веб-пакет автоматически выполнит отдельную сборку для каждой конфигурации. Таким образом, вы можете, например, поместить свои точки входа в массив и пройтись по нему, создав объект конфигурации для каждого. Теперь каждая конфигурация имеет только одну точку входа, и LimitChunkCountPlugin должен дать вам один файл.

person Brendan Gannon    schedule 01.03.2016