![](/img/trans.png)
[英]Webpack: Common chunks for code shared between Webworker and Web code?
[英]webpack: commonchunksplugin with webworker and multiple chunks
我正在開發一個遺留應用程序,目前必須以一種非常具體的方式進行拆分:一個簡化的案例是:我有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';
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個文件:
manifest.js
包含webpack的公共運行時 moduleA.js
只包含moduleA.js
的代碼 moduleB.js
只包含moduleB.js
的代碼 moduleC.js
只包含moduleC.js
的代碼 webworkerModule.js
,包含模塊A和模塊B的代碼以及webpack運行時 我嘗試了多種配置,但我無法獲得我想要的東西。
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];
這個解決方案的要點是我不知道有多個獨立配置是可能的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.