監(jiān)聽 globs 并在發(fā)生更改時運行任務(wù)。任務(wù)與任務(wù)系統(tǒng)的其余部分被統(tǒng)一處理。
const { watch } = require('gulp');
watch(['input/*.js', '!input/something.js'], function(cb) {
// body omitted
cb();
});
watch(globs, [options], [task])
參數(shù) | 類型 | 描述 |
---|---|---|
globs (required) | string array | Globs 用來監(jiān)聽文件系統(tǒng)。 |
options | object | 詳情參見下文 選項 |
task | function string | 一個 任務(wù)函數(shù) 或由 series() 和 parallel() 生成的組合任務(wù) |
chokidar 的一個實例,用于對監(jiān)聽設(shè)置進(jìn)行細(xì)粒度控制。
當(dāng)以 globs 形式傳遞非字符串或帶有任何非字符串的數(shù)組時,將拋出一個錯誤,并提示 "Non-string provided as watch path"。
當(dāng)字符串或數(shù)組作為 task 傳遞時,會拋出一個錯誤,提示 "watch task has to be a function (optionally generated by using gulp.parallel or gulp.series)"( watch 任務(wù)必須是一個函數(shù)(可以選擇使用 gulp.parallel 或 gulp.series 生成))。
名稱 | 類型 | 默認(rèn)值 | 描述 |
---|---|---|---|
ignoreInitial | boolean | true | false,則在實例化過程中調(diào)用該任務(wù),以發(fā)現(xiàn)文件路徑。用于在啟動期間觸發(fā)任務(wù)。 注意: 這個選項被傳遞給 chokidar,但默認(rèn)為 true 而不是 false 。 |
delay | number | 200 | 文件更改和任務(wù)執(zhí)行之間的毫秒延遲。允許在執(zhí)行任務(wù)之前等待許多更改,例如查找和替換許多文件。 |
queue | boolean | true | 當(dāng)為 true 且任務(wù)已經(jīng)運行時,任何文件更改都將對單個任務(wù)執(zhí)行進(jìn)行排隊。避免長時間運行的任務(wù)重疊。 |
events | string array | [ 'add', 'change', 'unlink' ] | 正在監(jiān)聽的事件,以觸發(fā)任務(wù)執(zhí)行。可以是 'add' 、'addDir' 、'change' 、'unlink' 、'unlinkDir' , 'ready' 、和/或 'error' 。 另外 'all' 也是可用的,它表示除 'ready' 和 'error' 之外的所有事件。此選項被直接傳遞給 chokidar. |
persistent | boolean | true | 如果為 false,監(jiān)聽器將不會保持 Node 進(jìn)程的運行。不建議禁用此選項。 此選項被直接傳遞給 chokidar. |
ignored | array string RegExp function | Defines globs to be ignored. If a function is provided, it will be called twice per path - once with just the path, then with the path and the fs.Stats object of that file.此選項被直接傳遞給 chokidar. | |
followSymlinks | boolean | true | 如果為 true,對符號鏈接和鏈接的文件的更改都將觸發(fā)事件。如果為 false,則只有對符號鏈接的更改才觸發(fā)事件。 此選項被直接傳遞給 chokidar. |
cwd | string | 將與任何相對路徑相結(jié)合以形成絕對路徑的目錄。對于絕對路徑忽略。用于避免將 globs 與 path.join() 組合使用。此選項被直接傳遞給 chokidar. | |
disableGlobbing | boolean | false | 如果為 true,所有 globs 都被視為字面路徑名稱,即使它們具有特殊字符。此選項被直接傳遞給 chokidar. |
usePolling | boolean | false | 當(dāng)為 false 時,監(jiān)聽器將使用 fs.watch() (或 Mac 上的 fsevents)(或fsevents)進(jìn)行監(jiān)聽。如果為 true,則使用 fs.watchFile() 輪詢代替——這是通過網(wǎng)絡(luò)或其他非標(biāo)準(zhǔn)情況成功監(jiān)聽文件所必需的。覆蓋 useFsEvents 默認(rèn)值。此選項被直接傳遞給 chokidar. |
interval | number | 100 | 與 usePolling: true 配套使用。表示文件系統(tǒng)輪詢的間隔。此選項被直接傳遞給 chokidar. |
binaryInterval | number | 300 | 與 usePolling: true 配套使用。表示文件系統(tǒng)輪詢二進(jìn)制文件的間隔。此選項被直接傳遞給 chokidar. |
useFsEvents | boolean | true | 如果為 true 且 fsevents 可用, 則使用 fsevents 進(jìn)行監(jiān)聽。如果顯式設(shè)置為 true,則替代 usePolling 選項。如果設(shè)置為 false,則自動將 usePolling 設(shè)置為 true。此選項被直接傳遞給 chokidar. |
alwaysStat | boolean | false | 如果為 true,總是調(diào)用 fs.stat() 對已更改的文件——將減慢文件監(jiān)聽器。只有在直接使用chokidar 實例時,fs.Stat 的對象才可用。此選項被直接傳遞給 chokidar. |
depth | number | 指示將監(jiān)聽多少級嵌套目錄。 此選項被直接傳遞給 chokidar. | |
awaitWriteFinish | boolean | false | 不要使用這個選項,而是使用 delay 。此選項被直接傳遞給 chokidar. |
ignorePermissionErrors | boolean | false | 設(shè)置為 true 以監(jiān)聽沒有讀取權(quán)限的文件。然而,如果由于 EPERM 或 EACCES 錯誤導(dǎo)致監(jiān)聽失敗,則會自動跳過。 此選項被直接傳遞給 chokidar. |
atomic | number | 100 | 只有在 useFsEvents 和 usePolling 為 false 時才激活。自動過濾掉一些編輯器從 "atomic writes" 中產(chǎn)生的工件。如果文件在刪除后的指定毫秒內(nèi)重新添加,則會發(fā)出一個更改事件(而不是取消鏈接然后添加)。此選項被直接傳遞給 chokidar. |
watch() 方法返回 chokidar 的底層實例,提供對監(jiān)聽設(shè)置的細(xì)粒度控制。最常用來注冊提供更改文件的 path 或 stats 的單個事件處理程序。
當(dāng)直接使用 chokidar 實例時,您將無法訪問任務(wù)系統(tǒng)集成,包括異步完成、隊列和延遲
const { watch } = require('gulp');
const watcher = watch(['input/*.js']);
watcher.on('change', function(path, stats) {
console.log(`File ${path} was changed`);
});
watcher.on('add', function(path, stats) {
console.log(`File ${path} was added`);
});
watcher.on('unlink', function(path, stats) {
console.log(`File ${path} was removed`);
});
watcher.close();
watcher.on(eventName, eventHandler)
注冊 eventHandler 函數(shù),當(dāng)指定的事件發(fā)生時調(diào)用該函數(shù)。
參數(shù) | 類型 | 描述 |
---|---|---|
eventName | string | 可以觀察到的事件有 'add' 、'addDir' 、'change' 、'unlink' 、'unlinkDir' 、'ready' 、'error' 、 或 'all' . |
eventHandler | function | 當(dāng)指定的事件發(fā)生時調(diào)用的函數(shù)。參數(shù)詳見下表。 |
參數(shù) | 類型 | 描述 |
---|---|---|
path | string | 已更改的文件的路徑。如果設(shè)置了 cwd 選項,則是通過刪除 cwd 的相對路徑。 |
stats | object | 一個 fs.Stat 對象,但可以是 undefined 。如果 alwaysStat 選項被設(shè)置為 true ,stats 將始終被提供。 |
watcher.close()
關(guān)閉文件監(jiān)聽器。一旦關(guān)閉,就不會再發(fā)出任何事件。
watcher.add(globs)
向已經(jīng)運行的監(jiān)聽器實例添加額外的 globs。
參數(shù) | 類型 | 描述 |
---|---|---|
globs | string array | 額外的要監(jiān)聽的 globs |
watcher.unwatch(globs)
刪除正在被監(jiān)聽的 globs,而監(jiān)視程序繼續(xù)使用剩余的路徑。
參數(shù) | 類型 | 描述 |
---|---|---|
globs | string array | 要刪除的 globs。 |
更多建議: