Webpack 3 - 4 - преобразование CommonsChunkPlugin в splitChunks - PullRequest
0 голосов
/ 10 июня 2018

Не удалось перейти на Webpack 4.

Я предоставляю библиотеку, и моя цель - получить файлы libs, core, extensions (как мне удалось сделать в веб-пакете 3).

Поэтому я создал 3 точки входа, которые импортируют весь мой код (чтобы связать его).

Это часть конфигурации webpack 3:

const outputFileName = `MyInfra`;


...
entry: {
   "myLibs": './infra/libs",
   "myCore": './infra/core",
   "MyExt1": './infra/ext1",
},
output: {
    path: path.join(__dirname, 'dist'),
    filename: `${outputFileName}.js`,
    sourceMapFilename: `maps/${outputFileName}.map.js`,
    libraryTarget: 'umd',
    umdNamedDefine: true
},
plugins: [
     new webpack.optimize.OccurrenceOrderPlugin(),
     new webpack.optimize.CommonsChunkPlugin({ names: ['myCore', 
         'myLibs'], filename: `${outputFileName}.js` })
        ],

Это создает 3 файла, которые я хотел, и только в файле libs добавляется код webpackBootstrap.

От моего пользователя я ожидаю включить libs, core и extension в его html в таком порядке.

Я пытаюсь перейти на splitChunks.cacheGroups - но безуспешно.

Ближайший результат, которого мне удалось достичь, это: (Я изменил имена точек входа без запятых)

optimization:{
    splitChunks: {
        cacheGroups:{
          default: false,
          myLibs: { name:"libs", test: "myLibs", chunks: "initial", enforce:true, reuseExistingChunk: true},
          myCore: { name:"core", test: "myCore", chunks: "initial", enforce:true, reuseExistingChunk: true},
          myExt1: { name:"ext1", test: "myExt1", chunks: "initial", enforce:true, reuseExistingChunk: true}
        }
    }
}

В результате получается 6 файлов, а не 3. libs.js, myLibs.js, core.js, myCore.js, ext1.js, myExt1.js .. Все файлы my занимают всего 7 Кбайт с кодом webpackBootstrap .. каждый код будет загружать модули, если только все 3 libs core и ext1 будут включены первыми.

Это одна из проблему меня есть .. Почему у нас есть эти дополнительные 2 файла.И почему мне нужно включить все файлы, чтобы загрузить модуль libs?

А потом я продолжил и включил все свои скрипты и запустил демонстрационное приложение.

Я нашелЕще одна вещь, которая изменилась и теперь перестала работать.

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

const Defaults = {
   ...
   option : value,
   ...
}
export default Defaults;

Раньше он работал в веб-пакете 3.6, как и ожидалось.

Пожалуйста, помогите мне здесь.. Я бьюсь головой об этих 2 проблемах.

...