国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

gulp文件監(jiān)控

2020-09-30 18:03 更新

gulp文件監(jiān)控

gulp api 中的 watch() 方法利用文件系統(tǒng)的監(jiān)控程序(file system watcher)將 globs 與 任務(wù)(task) 進(jìn)行關(guān)聯(lián)。它對匹配 glob 的文件進(jìn)行監(jiān)控,如果有文件被修改了就執(zhí)行關(guān)聯(lián)的任務(wù)(task)。如果被執(zhí)行的任務(wù)(task)沒有觸發(fā) 異步完成 信號,它將永遠(yuǎn)不會再次運(yùn)行了。

此 API 的默認(rèn)設(shè)置是基于通常的使用場景的,而且提供了內(nèi)置的延遲和排隊機(jī)制。

const { watch, series } = require('gulp');

function clean(cb) {
  // body omitted
  cb();
}

function javascript(cb) {
  // body omitted
  cb();
}

function css(cb) {
  // body omitted
  cb();
}

// 可以只關(guān)聯(lián)一個任務(wù)
watch('src/*.css', css);
// 或者關(guān)聯(lián)一個任務(wù)組合
watch('src/*.js', series(clean, javascript));

警告:避免同步任務(wù)

就像注冊到任務(wù)系統(tǒng)中的任務(wù)(task)一樣,與文件監(jiān)控程序關(guān)聯(lián)的任務(wù)(task)不能是同步任務(wù)(synchronous taks)。如果你將同步任務(wù)(task)關(guān)聯(lián)到監(jiān)控程序,則無法確定任務(wù)(task)的完成情況,任務(wù)(task)將不會再次運(yùn)行(假定當(dāng)前正在運(yùn)行)。

由于文件監(jiān)控程序會讓你的 Node 進(jìn)程保持持續(xù)運(yùn)行,因此不會有錯誤或警告產(chǎn)生。由于進(jìn)程沒有退出,因此無法確定任務(wù)(task)是否已經(jīng)完成還是運(yùn)行了很久很久了。

可監(jiān)控的事件

默認(rèn)情況下,只要創(chuàng)建、更改或刪除文件,文件監(jiān)控程序就會執(zhí)行關(guān)聯(lián)的任務(wù)(task)。 如果你需要使用不同的事件,你可以在調(diào)用 watch() 方法時通過 events 參數(shù)進(jìn)行指定。可用的事件有 'add'、'addDir'、'change'、'unlink'、'unlinkDir'、'ready'、'error'。此外,還有一個 'all' 事件,它表示除 'ready' 和 'error' 之外的所有事件。

const { watch } = require('gulp');

// 所有事件都將被監(jiān)控
watch('src/*.js', { events: 'all' }, function(cb) {
  // body omitted
  cb();
});

初次執(zhí)行

調(diào)用 watch() 之后,關(guān)聯(lián)的任務(wù)(task)是不會被立即執(zhí)行的,而是要等到第一次文件修之后才執(zhí)行。

如需在第一次文件修改之前執(zhí)行,也就是調(diào)用 watch() 之后立即執(zhí)行,請將 ignoreInitial 參數(shù)設(shè)置為 false。

const { watch } = require('gulp');

// 關(guān)聯(lián)的任務(wù)(task)將在啟動時執(zhí)行
watch('src/*.js', { ignoreInitial: false }, function(cb) {
  // body omitted
  cb();
});

隊列

watch() 方法能夠保證當(dāng)前執(zhí)行的任務(wù)(task)不會再次并發(fā)執(zhí)行。當(dāng)文件監(jiān)控程序關(guān)聯(lián)的任務(wù)(task)正在運(yùn)行時又有文件被修改了,那么所關(guān)聯(lián)任務(wù)的這次新的執(zhí)行將被放到執(zhí)行隊列中等待,直到上一次關(guān)聯(lián)任務(wù)執(zhí)行完之后才能運(yùn)行。每一次文件修改只產(chǎn)生一次關(guān)聯(lián)任務(wù)的執(zhí)行并放入隊列中。

如需禁止隊列,請將 queue 參數(shù)設(shè)置為 false。

const { watch } = require('gulp');

// 每次文件修改之后關(guān)聯(lián)任務(wù)都將執(zhí)行(有可能并發(fā)執(zhí)行)
watch('src/*.js', { queue: false }, function(cb) {
  // body omitted
  cb();
});

延遲

文件更改之后,只有經(jīng)過 200 毫秒的延遲之后,文件監(jiān)控程序所關(guān)聯(lián)的任務(wù)(task)才會被執(zhí)行。這是為了避免在同使更改許多文件時(例如查找和替換操作)過早啟動任務(wù)(taks)的執(zhí)行。

如需調(diào)整延遲時間,請為 delay 參數(shù)設(shè)置一個正整數(shù)。

const { watch } = require('gulp');

// 文件第一次修改之后要等待 500 毫秒才執(zhí)行關(guān)聯(lián)的任務(wù)
watch('src/*.js', { delay: 500 }, function(cb) {
  // body omitted
  cb();
});

使用監(jiān)控程序?qū)嵗?/h2>

你可能不會使用到此功能,但是如果你需要對被修改的文件進(jìn)行完全的掌控 (例如訪問文件路徑或元數(shù)據(jù))請使用從 watch() 返回的 chokidar 實(shí)例。

注意: 返回的 chokidar 實(shí)例沒有隊列、延遲和異步完成(async completion)這些功能。

可選的依賴項

Gulp 有一個名為 fsevents 的可選依賴項,他是一個特定于 Mac 系統(tǒng)的文件監(jiān)控程序。如果你看到安裝 fsevents 時出現(xiàn)的警告信息 - "npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents" - 這并不是什么問題,忽略即可。 如果跳過 fsevents 的安裝,將使用一個備用文件監(jiān)控程序,后續(xù)在 gulpfile 中產(chǎn)生的任何錯誤都將與此警告無關(guān)。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號