作者:PHP菜鸟 | 来源:互联网 | 2023-05-26 15:34
我想在gulp任务运行或运行时登录到stdout(配置环境).
像这样的东西:
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);
});
});
我不确定我应该回应什么事件或在哪里找到这些列表.有什么指针吗?非常感谢.
1> Jacob Budin..:
(2017年12月,gulp-util
提供日志记录的模块已弃用 .Gulp团队建议开发人员用fancy-log
模块替换此功能.此答案已更新以反映这一点.)
fancy-log
提供日志记录,最初由Gulp团队建立.
var log = require('fancy-log');
log('Hello world!');
要添加日志记录,Gulp的API文档告诉我们.src
返回:
返回可以通过管道传输到插件的Vinyl文件流.
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
事件可以在插件完成之前调用(并且已经发送了所有自己的输出),因为在"所有数据都已刷新到底层系统"时调用该事件.
知道为什么需要一个工具吗?为什么`console.log`不起作用?
@AlexMcMillan` .on('end',function(){console.log('Almost there ...');})`对我有用.
截至今天(2017年12月),'gulp-util`已被弃用:https://medium.com/gulpjs/gulp-util-ca3b1f9f9ac5
`.on('end',()=> gutil.log('ES6箭头语法为简单起见...'))
@AlexMcMillan它将漂亮地以与其余日志相同的样式打印输出,以便您获取计时器。
2> Trevedhek..:
为了建立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);
});
}
据我了解,`writable.on('finish')`会在`readable.on('end')`可能没有时触发.在这种情况下,确切的事件可能无关紧要 - 我更专注于记录有用的统计数据.