console.log 到 gulp 事件的标准输出

console.log to stdout on gulp events

我想在 gulp 任务 运行ning 或有 运行.

时记录到标准输出(配置环境)

像这样:

gulp.task('scripts', function () {
  var enviroment = argv.env || 'development';
  var config = gulp.src('config/' + enviroment + '.json')
      .pipe(ngConstant({name: 'app.config'}));
  var scripts = gulp.src('js/*');

  return es.merge(config, scripts)
    .pipe(concat('app.js'))
    .pipe(gulp.dest('app/dist'))
    .on('success', function() { 
      console.log('Configured environment: ' + environment);
    });
});

我不确定我应该响应什么事件或在哪里可以找到这些事件的列表。任何指针?非常感谢。

(2017 年 12 月,提供日志记录的 gulp-util 模块 was deprecated。Gulp 团队建议开发人员将此功能替换为 fancy-log 模块。此答案已更新以反映这一点。)

fancy-log 提供日志记录,最初由 Gulp 团队构建。

var log = require('fancy-log');
log('Hello world!');

要添加日志记录,Gulp's API documentation 告诉我们 .src returns:

Returns a stream of Vinyl files that can be piped to plugins.

Node.js 的 Stream 文档提供了事件列表。放在一起,这是一个例子:

gulp.task('default', function() {
    return gulp.src('main.scss')
        .pipe(sass({ style: 'expanded' }))
        .on('end', function(){ log('Almost there...'); })
        .pipe(minifycss())
        .pipe(gulp.dest('.'))
        .on('end', function(){ log('Done!'); });
});

注意:end 事件可能会在插件完成(并已发送其所有输出)之前被调用,因为该事件在 "all data has been flushed to the underlying system".

时被调用

(请注意 - 2017 年 12 月,gulp-util 模块已弃用。)

基于 Jacob Budin 的答案,我最近尝试了这个并发现它很有用。

var gulp = require("gulp");
var util = require("gulp-util");
var changed = require("gulp-changed");

gulp.task("copyIfChanged", function() {
    var nSrc=0, nDes=0, dest="build/js";
    gulp.src("app/**/*.js")
    .on("data", function() { nSrc+=1;})
    .pipe(changed(dest)) //filter out src files not newer than dest
    .pipe(gulp.dest(dest))
    .on("data", function() { nDes+=1;})
    .on("finish", function() {
        util.log("Results for app/**/*.js");
        util.log("# src files: ", nSrc);
        util.log("# dest files:", nDes);
    });
}

更新(2021 年 4 月): 重新弃用的模块问题。 尝试用 require('fancy-log') 中的 log 替换 require('gulp-util') 中的 util.log。该方法的其余部分应该仍然有效。免责声明:我还没有测试过这个。

遗憾的是 gulp.util 已弃用。 使用 fancy-log 代替: https://www.npmjs.com/package/fancy-log.