跳到主要内容

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
(必填)
function
string
任务函数或已注册任务的字符串别名。
precisionnumber默认值:Node v0.10 上为 1000,Node v0.12+ 上为 0。详细信息请参见下方的时间戳精度部分。

返回值

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

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

错误

当使用字符串或函数以外的值调用时,抛出错误,错误信息为"Only functions can check lastRun"(只有函数可以检查 lastRun)。

当在不可扩展的函数上调用且 Node 缺少 WeakMap 时,抛出错误,错误信息为"Only extensible functions can check lastRun"(只有可扩展的函数可以检查 lastRun)。

时间戳精度

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

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

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

平台精度
Node v0.101000毫秒
Node v0.12+1毫秒
FAT32 文件系统2000毫秒
HFS+ 或 Ext3 文件系统1000毫秒
使用 Node v0.10 的 NTFS1秒
使用 Node 0.12+ 的 NTFS100毫秒
使用 Node v0.10 的 Ext41000毫秒
使用 Node 0.12+ 的 Ext41毫秒