W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵(lì)
除了導(dǎo)出單個(gè)配置外,還有一些能滿足更多需求的使用方式。
你可能會遇到需要區(qū)分開發(fā)環(huán)境和生產(chǎn)環(huán)境的情況。有很多種方式可以做到這一點(diǎn)。其中一種選擇是由 webpack 配置導(dǎo)出一個(gè)函數(shù)而非對象,這個(gè)函數(shù)包含兩個(gè)參數(shù):
output-path
? 和 ?mode
?等。-module.exports = {
+module.exports = function(env, argv) {
+ return {
+ mode: env.production ? 'production' : 'development',
+ devtool: env.production ? 'source-map' : 'eval',
plugins: [
new TerserPlugin({
terserOptions: {
+ compress: argv.mode === 'production' // only if `--mode production` was passed
}
})
]
+ };
};
當(dāng)需要異步加載配置變量時(shí),webpack 將執(zhí)行函數(shù)并導(dǎo)出一個(gè)配置文件,同時(shí)返回一個(gè) Promise。
module.exports = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve({
entry: './app.js',
/* ... */
});
}, 5000);
});
};
除了導(dǎo)出單個(gè)配置對象/函數(shù),你可能也會需要導(dǎo)出多種配置(webpack 3.1.0 起支持)。當(dāng)運(yùn)行 webpack 時(shí),所有配置項(xiàng)都會構(gòu)建。比如,對于多 targets(如 AMD 和 CommonJS)構(gòu)建 library 時(shí)會非常有用。
module.exports = [
{
output: {
filename: './dist-amd.js',
libraryTarget: 'amd',
},
name: 'amd',
entry: './app.js',
mode: 'production',
},
{
output: {
filename: './dist-commonjs.js',
libraryTarget: 'commonjs',
},
name: 'commonjs',
entry: './app.js',
mode: 'production',
},
];
以防你的某個(gè)配置依賴于另一個(gè)配置的輸出,你可以使用一個(gè) ?dependencies
? 列表指定一個(gè)依賴列表。
webpack.config.js
module.exports = [
{
name: 'client',
target: 'web',
// …
},
{
name: 'server',
target: 'node',
dependencies: ['client'],
},
];
如果你導(dǎo)出了多個(gè)配置,你可以在配置中使用 ?parallelism
? 選項(xiàng)來指定編譯的最大并發(fā)數(shù)。
number
?webpack.config.js
module.exports = [
{
//config-1
},
{
//config-2
},
];
module.exports.parallelism = 1;
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: