为什么在所有入口点都使用Webpack 4 runtimeChunk?

时间:2018-08-31 08:42:29

标签: node.js webpack

我目前正在大型商业应用程序上从v1.2 => v4.1升级WP。我遇到一个问题,其中splitChunks正在为每个入口点创建我的商店的多个实例(我们正在使用的商店非常老旧和过时,但这超出了我的控制ATM)。

我看到的问题是,运行时代码被添加到多次执行同一模块的每个入口点-我在沙盒环境中成功地重新创建了该问题,并且当我在配置中添加了一个runtimeChunk时,提取了该代码将运行时代码合并到一个文件中并解决了我的问题-但是,当我将其应用于应用程序时,创建了一个运行时文件,但是runtimeChunk也保留在每个入口点中,因此问题仍然存在。以下是我当前配置的示例。

module.exports = {
  entry: {
  app: [
    'babel-polyfill', 
    'whatwg-fetch', 
    './src/app/app' 
  ],
  testEntry: './src/modules/testEntry.js',
},
output: {
  pathinfo: true,
  publicPath: '/',
  chunkFilename: '[id].js'
},
module: {
  rules: [
    {
      test: /\.jsx?$/,
      exclude: /node_modules/,
      loader: 'babel-loader'
    },
  ]
},
optimization: {
  splitChunks: {
    cacheGroups: {
      commons: {
        name: 'commons',
        filename: "js/[name].js",
        test: /\.js(x)?$/,
        chunks: "initial",
        minChunks: 1
      }
    }
  },
  runtimeChunk: {
    name: 'shared',
  },
},
mode: 'development', 
devtool: 'eval', 
devServer: {
  contentBase: __dirname, 
  port: 5000
},
plugins: [
  new HtmlWebpackPlugin({
    template: './src/index.html'
  })
]

};

我是否可以强制运行时代码只执行一次?

编辑更新

我现在已更新到webpack 4.17(最新),现在很奇怪-当我使用单个运行时选项时-我的输入包未生成

0 个答案:

没有答案