gulp.lastRun()

2020-09-30 18:06 更新

gulp.lastRun()介紹

檢索在當(dāng)前運(yùn)行進(jìn)程中成功完成任務(wù)的最后一次時(shí)間。最有用的后續(xù)任務(wù)運(yùn)行時(shí),監(jiān)視程序正在運(yùn)行。當(dāng)監(jiān)視程序正在運(yùn)行時(shí),對(duì)于后續(xù)的任務(wù)運(yùn)行最有用。

當(dāng)與 src() 組合時(shí),通過(guò)跳過(guò)自上次成功完成任務(wù)以來(lái)沒(méi)有更 改的文件,使增量構(gòu)建能夠加快執(zhí)行時(shí)間。

gulp.lastRun()用法

const { src, dest, lastRun, watch } = require('gulp');
const imagemin = require('gulp-imagemin');

function images() {
  return src('src/images/**/*.jpg', { since: lastRun(images) })
    .pipe(imagemin())
    .pipe(dest('build/img/'));
}

exports.default = function() {
  watch('src/images/**/*.jpg', images);
}; 

gulp.lastRun()函數(shù)原型

lastRun(task, [precision])

參數(shù)

參數(shù) 類(lèi)型 描述
task
(required)
function
string
已注冊(cè)任務(wù)的任務(wù)函數(shù)或字符串別名。
precision number 默認(rèn)值: Node v0.10 版本中是 1000,在 Node v0.12+ 版本中是 0 。在下面的 時(shí)間戳精度 章中有詳細(xì)說(shuō)明。

返回值

返回一個(gè)時(shí)間戳(以毫秒為單位),表示任務(wù)的最后完成時(shí)間。如果任務(wù)尚未運(yùn)行或已經(jīng)失敗,則返回 undefined。

為了避免緩存無(wú)效狀態(tài)(invalid state),因此,如果任務(wù)出錯(cuò),則返回值為 undefined。

可能出現(xiàn)的錯(cuò)誤

當(dāng)傳入的參數(shù)值不是字符串或函數(shù)時(shí),會(huì)拋出一個(gè)錯(cuò)誤,并顯示錯(cuò)誤信息 "Only functions can check lastRun"。

當(dāng)對(duì)不可擴(kuò)展的函進(jìn)行數(shù)調(diào)或 Node 不支持 WeakMap 時(shí),會(huì)拋出一個(gè)錯(cuò)誤,并顯示錯(cuò)誤信息 "Only extensible functions can check lastRun"。

時(shí)間戳精度

雖然時(shí)間戳的精度有合理的默認(rèn)值,但仍然可以通過(guò) precision 參數(shù)對(duì)其進(jìn)行舍入。如果你所使用文件系統(tǒng)或 Node 版本對(duì)文件的時(shí)間屬性精度不高的話(huà),則很有用。

  • lastRun(someTask) 返回 1426000001111
  • lastRun(someTask, 100) 返回 1426000001100
  • lastRun(someTask, 1000) 返回 1426000001000

文件的 mtime stat 精度會(huì)由于 node 版本和/或所用的文件系統(tǒng)而出現(xiàn)誤差。

平臺(tái) 精度
Node v0.10 1000ms
Node v0.12+ 1ms
FAT32 file system 2000ms
HFS+ or Ext3 file systems 1000ms
NTFS using Node v0.10 1s
NTFS using Node 0.12+ 100ms
Ext4 using Node v0.10 1000ms
Ext4 using Node 0.12+ 1ms


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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)