Webpack 3到4 - CommonsChunkPlugin to splitChunks Conversion

时间:2018-06-10 12:43:48

标签: webpack webpack-3 webpack-4

无法迁移到Webpack 4.

我提供了一个库,我的目标是拥有libscoreextensions个文件(就像我在webpack 3中设法做的那样)。

因此,我创建了3个入口点,用于导入我的所有代码(为了捆绑它)。

这是webpack config 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中加入coreextensionhtml

我现在尝试迁移到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.jsmyLibs.jscore.jsmyCore.jsext1.jsmyExt1.js ..所有代码为my的{​​{1}}个文件只有7 Kb ..如果只有3个webpackBootstrap libscore,则每个代码都会加载模块首先包括在内。

这是我遇到的一个问题..为什么我们有这2个额外的文件。为什么我需要包含所有文件才能加载模块ext1

然后我继续并包含了我的所有脚本并运行了一个演示应用程序。

我发现另一件事发生了变化,现在停止了工作。

在我的下一篇文章中,我提供了一个用户可以更改的配置对象,即我在我的类中导入并相应地执行操作。我注意到导入配置对象会返回用户导入的对象的不同实例。

libs

它曾经按照预期在webpack 3.6中工作..

请在这里帮助我..我在这里遇到了这两个问题。

0 个答案:

没有答案