Javascript console.log到gulp事件的标准输出
我想在任务正在运行或已经运行时登录到stdout(配置环境) 大概是这样的:Javascript console.log到gulp事件的标准输出,javascript,node.js,gulp,Javascript,Node.js,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(
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
模块。gulp团队建议开发人员将此功能替换为fancy log
模块。此答案已更新以反映这一点。)
提供日志记录,最初由Gulp团队构建
var log=require('fancy-log');
日志(“你好,世界!”);
要添加日志记录,请告诉我们.src
返回:
返回可以通过管道传输到插件的乙烯基文件流
js的文档提供了事件列表。综上所述,这里有一个例子:
gulp.task('default',function()){
返回gulp.src('main.scss')
.pipe(sass({style:'expanded'}))
.on('end',function(){log('smessthere…');})
.pipe(minifycss())
.pipe(吞咽目标('.'))
.on('end',function(){log('Done!');});
});
注意:end
事件可能在插件完成之前调用(并且已经发送了它自己的所有输出),因为该事件是在“所有数据都已刷新到基础系统”时调用的。(请注意,2017年12月,gulp util
模块被弃用。)
我最近尝试了这个方法,发现它很有用
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('gulp-util')
中的util.log
替换为require('fancy-log')
。该方法的其余部分应该仍然有效。免责声明:我尚未对此进行测试。遗憾的是gulp.util
被弃用。
改用fancy log
:
.on('end',()=>gutil.log('ES6 arrow syntax for simply…)
.on('end',()=>gutil.log('ES6 arrow syntax for simply…)
知道为什么需要工具吗?为什么console.log
不起作用?@AlexMcMillan.on('end',function(){console.log('most there…);})
对我有效。@AlexMcMillan它只是以与日志其余部分相同的样式漂亮地打印输出,所以你可以得到计时器。从今天(2017年12月)起,gulp util
已被弃用:.on(“end”)
和.on(“finish”)
的区别是什么?据我所知,可写。on(“finish”)
将在可读时启动。on(“end”)可能不会启动。在这种情况下,确切的事件可能并不重要——我更专注于记录有用的统计数据。“'finish'
和'end'
事件分别来自流。writeable
和stream.Readable
类。”@FrankNockegulp util
已被弃用,请改用花式日志