Javascript webpack:commonchunksplugin与webworker和多个区块
我使用的是一个遗留应用程序,目前必须以非常具体的方式进行拆分: 一个简化的例子是: 我有4个模块:Javascript webpack:commonchunksplugin与webworker和多个区块,javascript,webpack,webpack-2,Javascript,Webpack,Webpack 2,我使用的是一个遗留应用程序,目前必须以非常具体的方式进行拆分: 一个简化的例子是: 我有4个模块: //moduleA.js export const moduleA = ['moduleA']; //moduleB.js import {moduleA} from './moduleA'; export const moduleB = ['moduleB'].concat(moduleA); //moduleC.js import {moduleA} from './moduleA';
//moduleA.js
export const moduleA = ['moduleA'];
//moduleB.js
import {moduleA} from './moduleA';
export const moduleB = ['moduleB'].concat(moduleA);
//moduleC.js
import {moduleA} from './moduleA';
import {moduleB} from './moduleB';
export const moduleC = ['moduleC'].concat(moduleA).concat(moduleB);
//webworkerModule.js
import {moduleB} from './moduleB';
import {moduleA} from './moduleA';
console.log("Webworker Module", moduleA, moduleB);
我需要做的是输出5个文件:
包含Web包的公共运行时manifest.js
- 仅包含moduleA代码的
moduleA.js
- 仅包含moduleB代码的
moduleB.js
- 仅包含moduleC代码的
moduleC.js
包含模块A和模块B的代码以及webpack运行时webworkerModule.js
const path = require('path');
const webpack = require('webpack');
const config = {
entry:{
moduleA:'./src/moduleA.js',
moduleB:'./src/moduleB.js',
moduleC:'./src/moduleC.js',
webworkerModule:'./src/webworkerModule.js',
},
output: {
path: path.resolve(__dirname, 'dist'),
filename: '[name].js'
},
resolve: {
extensions: ['.js']
},
plugins: [
new webpack.optimize.CommonsChunkPlugin({
name: 'webworkerModule',
chunks: ['webworkerModule'],
minChunks: Infinity
}),
new webpack.optimize.CommonsChunkPlugin({
name: ['moduleA', 'moduleB', 'manifest'],
chunks: ['moduleA', 'moduleB', 'moduleC'],
minChunks: Infinity
})
]
};
module.exports = config;
例如,上面的配置生成正确的webworkerModule.js,但moduleA和moduleB在其他文件中重复
有人对此有什么见解吗?我找到了一个解决方案:
const path = require('path');
const webpack = require('webpack');
const configWW = {
entry:{
webworkerModule:'./src/webworkerModule.js',
},
output: {
path: path.resolve(__dirname, 'dist'),
filename: '[name].js'
},
resolve: {
extensions: ['.js']
},
};
const configOthers = {
entry: {
moduleA:'./src/moduleA.js',
moduleB:'./src/moduleB.js',
moduleC:'./src/moduleC.js',
},
output: {
path: path.resolve(__dirname, 'dist'),
filename: '[name].js'
},
resolve: {
extensions: ['.js']
},
plugins: [
new webpack.optimize.CommonsChunkPlugin({
names: ['moduleB', 'moduleA', 'manifest'],
minChunks: Infinity
})
]
};
module.exports = [configWW, configOthers];
这个解决方案的要点是,我不知道可以有多个独立的配置。也许可以帮助您。谢谢,它帮助我找到了一个解决方案