W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
運(yùn)行以下 loader 在 worker pool 中。
npm install --save-dev thread-loader
使用時,需將此 loader 放置在其他 loader 之前。放置在此 loader 之后的 loader 會在一個獨(dú)立的 worker 池中運(yùn)行。
在 worker 池中運(yùn)行的 loader 是受到限制的。例如:
每個 worker 都是一個獨(dú)立的 ?node.js
? 進(jìn)程,其開銷大約為 600ms 左右。同時會限制跨進(jìn)程的數(shù)據(jù)交換。
請僅在耗時的操作中使用此 loader!
webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.js$/,
include: path.resolve('src'),
use: [
"thread-loader",
// 耗時的 loader (例如 babel-loader)
],
},
],
},
};
with options
use: [
{
loader: "thread-loader",
// 有同樣配置的 loader 會共享一個 worker 池
options: {
// 產(chǎn)生的 worker 的數(shù)量,默認(rèn)是 (cpu 核心數(shù) - 1),或者,
// 在 require('os').cpus() 是 undefined 時回退至 1
workers: 2,
// 一個 worker 進(jìn)程中并行執(zhí)行工作的數(shù)量
// 默認(rèn)為 20
workerParallelJobs: 50,
// 額外的 node.js 參數(shù)
workerNodeArgs: ['--max-old-space-size=1024'],
// 允許重新生成一個僵死的 work 池
// 這個過程會降低整體編譯速度
// 并且開發(fā)環(huán)境應(yīng)該設(shè)置為 false
poolRespawn: false,
// 閑置時定時刪除 worker 進(jìn)程
// 默認(rèn)為 500(ms)
// 可以設(shè)置為無窮大,這樣在監(jiān)視模式(--watch)下可以保持 worker 持續(xù)存在
poolTimeout: 2000,
// 池分配給 worker 的工作數(shù)量
// 默認(rèn)為 200
// 降低這個數(shù)值會降低總體的效率,但是會提升工作分布更均一
poolParallelJobs: 50,
// 池的名稱
// 可以修改名稱來創(chuàng)建其余選項(xiàng)都一樣的池
name: "my-pool"
},
},
// 耗時的 loader(例如 babel-loader)
];
預(yù)警
可以通過預(yù)警 worker 池來防止啟動 worker 時的高延時。
這會啟動池內(nèi)最大數(shù)量的 worker 并把指定的模塊加載到 ?node.js
? 的模塊緩存中。
const threadLoader = require('thread-loader');
threadLoader.warmup(
{
// 池選項(xiàng),例如傳遞給 loader 選項(xiàng)
// 必須匹配 loader 選項(xiàng)才能啟動正確的池
},
[
// 加載模塊
// 可以是任意模塊,例如
'babel-loader',
'babel-preset-es2015',
'sass-loader',
]
);
如果還未閱讀貢獻(xiàn)指南,請抽時間進(jìn)行閱讀。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: