Разделенные куски в веб-паке 4 - PullRequest
0 голосов
/ 13 июня 2018

Я пытаюсь перенести проект из веб-пакета 3 в веб-пакет 4. В предыдущей версии была такая конфигурация:

new webpack.optimize.CommonsChunkPlugin({ names: ['common', 'initApp'], filename: '[name].[hash].js' }),
new webpack.optimize.CommonsChunkPlugin({ names: ['app'], children: true, minChunks: 2, filename: '[name].[hash].js' }),

Как правильно перенести проект в веб-пакет 4?

Iпопробовал следующий конфиг:

optimization: {
  minimize: !development,
  noEmitOnErrors: true, //! Webpack 4
  splitChunks: {
    cacheGroups: {
      utils: {
        name: 'utils',
        test: /utils/,
        chunks: 'initial',
        reuseExistingChunk: true
      },
      initApp: {
        name: 'initApp',
        test: /initApp/,
      },
      common: {
        name: 'common',
        test: /common/,
        chunks: 'all',
      },
      app: {
        minChunks: 2,
        name: 'app',
        test: /app/,
      },
    },
  },

  minimizer: [],
  namedModules: development,
},

И вот проблема, которая у меня возникла: у некоторых my_module (из node_modules) есть следующий код (я переместил его в точку входа utils):

  let localeStrings;
  export function l10n(key, ...args) {
    if (!localeStrings) {
      throw new Error('l10nLib.l10n called before locale strings loaded');
    }
    /// Do some logic
  }
  // And here some function is initialize localeStrings that we are calling `initApp` entry point

Теперь с текущей конфигурацией этот чанк (из my_module) вызывается дважды: первый раз из initApp и второй раз из app точки входа и localeStrings переменная в первый раз правильно инициализируется при вызове из initApp ивторой раз, когда он вызывался из app точки входа localeStrings, это undefined, почему?

...