gulp入门教程9:lastRun

什么是lastRun?

lastRun是Gulp提供的一个函数,用于检索一个任务在当前运行进程中最后一次成功完成的时间。当与src函数结合使用时,它可以根据文件的最后修改时间(mtime)与任务最后成功运行的时间进行比较,从而决定哪些文件需要被处理,哪些文件可以跳过。

基本用法

首先,你需要安装Gulp及其相关插件。如果还没有安装,可以通过npm进行安装:

npm install --save-dev gulp gulp-imagemin

接下来,我们来看一个使用lastRun的示例。在这个示例中,我们将对src/images目录下的JPEG图片进行压缩,并将压缩后的图片保存到build/img目录。通过使用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);
};

在这个示例中,src函数的第二个参数是一个选项对象,其中since属性被设置为lastRun(images)的返回值。这意味着src只会选择那些最后修改时间晚于images任务上次成功运行时间的JPEG图片文件。

参数说明

  • task(必需):可以是一个任务函数或者一个已注册任务的字符串别名。
  • precision(可选):时间戳的精度,默认为Node v0.10上的1000毫秒,Node v0.12+上为0毫秒。如果你的文件系统或Node版本的文件时间属性精度较低,可以通过这个参数来调整时间戳的精度。

错误处理

  • 如果lastRun被调用时传入的不是函数或字符串,会抛出一个错误,消息为"Only functions can check lastRun"。
  • 如果在不支持WeakMap的环境中调用lastRun,并且传入的是一个不可扩展的函数,也会抛出错误,消息为"Only extensible functions can check lastRun"。

时间戳精度

根据你的Node版本和文件系统,文件的最后修改时间(mtime)精度可能会有所不同。lastRun函数允许你通过precision参数来调整这个时间戳的精度,以适应不同的环境。

例如:

  • lastRun(someTask)可能返回1426000001111(精确到毫秒)。
  • lastRun(someTask, 100)可能返回1426000001100(精确到百毫秒)。
  • lastRun(someTask, 1000)可能返回1426000001000(精确到秒)。

结论

通过使用lastRun函数,你可以轻松地实现Gulp任务的增量构建,从而显著提高构建效率。这对于处理大量文件或频繁更改的项目尤其有用。希望本文能够帮助你更好地理解和使用lastRun函数来优化你的Gulp构建流程。

猜你喜欢

转载自blog.csdn.net/gusushantang/article/details/143493456