W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
Webpack 可以監(jiān)聽文件變化,當它們修改后會重新編譯。這個頁面介紹了如何啟用這個功能,以及當 watch 無法正常運行的時候你可以做的一些調整。
?boolean = false
?
啟用 Watch 模式。這意味著在初始構建之后,webpack 將繼續(xù)監(jiān)聽任何已解析文件的更改。
webpack.config.js
module.exports = {
//...
watch: true,
};
?object
?
一組用來定制 watch 模式的選項:
webpack.config.js
module.exports = {
//...
watchOptions: {
aggregateTimeout: 200,
poll: 1000,
},
};
?number = 20
?
當第一個文件更改,會在重新構建前增加延遲。這個選項允許 webpack 將這段時間內進行的任何其他更改都聚合到一次重新構建里。以毫秒為單位:
module.exports = {
//...
watchOptions: {
aggregateTimeout: 600,
},
};
?RegExp
? ?string
? ?[string]
?
對于某些系統(tǒng),監(jiān)聽大量文件會導致大量的 CPU 或內存占用??梢允褂谜齽t排除像 node_modules 如此龐大的文件夾:
webpack.config.js
module.exports = {
//...
watchOptions: {
ignored: /node_modules/,
},
};
此外,還可以使用 glob 模式:
webpack.config.js
module.exports = {
//...
watchOptions: {
ignored: '**/node_modules',
},
};
也可以使用多 glob 匹配模式:
webpack.config.js
module.exports = {
//...
watchOptions: {
ignored: ['**/files/**/*.js', '**/node_modules'],
},
};
此外,你還可以指定一個絕對路徑:
const path = require('path');
module.exports = {
//...
watchOptions: {
ignored: [path.posix.resolve(__dirname, './ignored-dir')],
},
};
當使用 glob 模式時,我們使用 glob-to-regexp 將其轉為正則表達式,因此,在使用 watchOptions.ignored 的 glob 模式之前,請確保自己熟悉它。
?boolean = false number
?
通過傳遞 true 開啟 polling,將會設置默認輪詢間隔為 5007,或者指定毫秒為單位進行輪詢。
webpack.config.js
module.exports = {
//...
watchOptions: {
poll: 1000, // 每秒檢查一次變動
}
};
根據軟鏈接查找文件。這通常是不需要的,因為 webpack 已經使用 resolve.symlinks 解析了軟鏈接。
boolean
?module.exports = {
//...
watchOptions: {
followSymlinks: true,
},
};
當 stdin 流結束時停止監(jiān)聽。
boolean
?module.exports = {
//...
watchOptions: {
stdin: true,
},
};
如果您遇到任何問題,請查看以下注意事項。對于 webpack 為何會忽略文件修改,這里有多種原因。
在運行 webpack 時,通過使用 --progress 標志,來驗證文件修改后,是否沒有通知 webpack。如果進度顯示保存,但沒有輸出文件,則可能是配置問題,而不是文件監(jiān)視問題。
webpack --watch --progress
確認系統(tǒng)中有足夠多的文件觀察者。如果這個值太低,webpack 中的文件觀察者將無法識別修改:
cat /proc/sys/fs/inotify/max_user_watches
Arch 用戶,請將 ?fs.inotify.max_user_watches=524288
? 添加到 ?/etc/sysctl.d/99-sysctl.conf
? 中,然后執(zhí)行 ?sysctl --system
?。 Ubuntu 用戶(可能還有其他用戶)請執(zhí)行:?echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
?。
在 macOS 中,某些情況下文件夾可能會損壞。請參閱這篇文章。
因為 webpack 期望獲得多個配置選項的絕對路徑(如 ?__dirname + '/app/folder'
?),所以 Windows 的路徑分隔符 \ 可能會破壞某些功能。
使用正確的分隔符。即 ?path.resolve(__dirname, 'app/folder')
? 或 ?path.join(__dirname, 'app', 'folder')
?。
在某些機器上,Vim 預先將 backupcopy 選項 設置為 auto。這可能會導致系統(tǒng)的文件監(jiān)視機制出現問題。將此選項設置為 yes 可以確保創(chuàng)建文件的副本,并在保存時覆蓋原始文件。
?:set backupcopy=yes
?
使用 JetBrains WebStorm IDE 時,你可能會發(fā)現保存修改過的文件,并不會按照預期觸發(fā)觀察者。嘗試在設置中禁用 ?Back up files before saving
? 選項,該選項確定在原文件被覆蓋之前,文件是否先保存到臨時位置:取消選中 ?File > {Settings|Preferences} > Appearance & Behavior > System Settings > Back up files before saving
?。在一些
webstorm 版本中,該配置項可能會被稱為 "safe write"(首先將更改保存到臨時文件)`。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: