lastRun()#

检索当前运行进程中任务上次成功完成的时间。在监视程序运行时,在后续任务运行中最为有用。

src() 结合使用时,启用增量构建,通过跳过自上次任务成功完成以来未更改的文件,从而加快执行时间。

用法#

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);
};

签名#

lastRun(task, [precision])

参数#

参数类型备注
task
(必需)
函数
字符串
任务函数或已注册任务的字符串别名。
precision数字默认值:Node v0.10 上的 1000,Node v0.12+ 上的 0。详情见下文的 时间戳精度 部分。

返回值#

一个时间戳(以毫秒为单位),与任务的上次完成时间相匹配。如果任务尚未运行或已失败,则返回 undefined

为了避免缓存无效状态,如果任务出错,则返回值将为 undefined

错误#

当使用字符串或函数以外的值调用时,会抛出一个错误,消息为“只有函数可以检查 lastRun”。

当在不可扩展函数上调用并且 Node 缺少 WeakMap 时,会抛出一个错误,消息为“只有可扩展函数可以检查 lastRun”。

时间戳精度#

虽然时间戳精度的默认值是合理的,但可以使用 precision 参数对它们进行舍入。如果你的文件系统或 Node 版本对文件时间属性的精度有损耗,这将很有用。

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

文件的 mtime stat 精度可能因 Node 版本和/或使用的文件系统而异。

平台precision
Node v0.101000ms
Node v0.12+1ms
FAT32 文件系统2000ms
HFS+ 或 Ext3 文件系统1000ms
使用 Node v0.10 的 NTFS1s
使用 Node 0.12+ 的 NTFS100ms
使用 Node v0.10 的 Ext41000ms
使用 Node 0.12+ 的 Ext41ms