2016-05-07 35 views
1

我使用Gulp作为处理文本和图像的简单构建系统的一部分,并定义了一系列用于复制,处理和删除这些文件的通用任务。 Gulp和所用的插件在控制台中提供了很多输出,但是如何将这个输出保存在文件中?将Gulp控制台输出记录到文件

理想的情况下,控制台的确切内容将被记录到console.log相同的格式,因为它出现在控制台(没有颜色,如控制台是常见的):

[13:35:21] Images: 208 items 
[13:35:23] gulp-imagemin: Minified 208 images (saved 0 B - 0%) 
[13:35:23] Finished 'build:images' after 19 s 
[13:35:23] Starting 'clean:responsive'... 
[13:35:23] Deleting /responsive/**/* 
[13:35:23] Finished 'clean:responsive' after 171 ms 
[13:35:23] Starting 'default'... 
[13:35:23] Finished 'default' after 57 μs 

许多咕嘟咕嘟的专注于日志记录的插件似乎主要是在已实现的控制台中执行此操作,并且只有gulp-messenger将其保存为文本(如json)。这可以通过例如gulp-util来实现吗?

+0

这对于一个gulp插件来说并不是一份真正的工作。当你调用gulp时,你应该简单地将STDOUT和STDERR重定向到一个文件。在任何Unix系统上,都应该这样做:'gulp task-name> output.log 2>&1'。 –

+0

我没有真正想到这一点,但你的例子(甚至在Windows上)的作品。只有它可以抑制控制台输出而有利于记录它。都可以发生?我想这与'2>&1'有关,但不太清楚如何解释。 – OleVik

+0

'2>&1'将STDERR(2)重定向到STDOUT(1),有效地将两者合并。记录到控制台和Linux上的文件就像这样:'gulp task-name 2>&1 | tee output.log'。没有关于Windows的线索。 –

回答

3

由于Sven Schoenung建议在评论中,这最好在Gulp本身之外完成。从本质上讲,在终端两种选择运行任务时,按预期:

运行“悄无声息”,即无控制台输出:

gulp task-name > output.log 2>&1

运行“正常”,也就是说,与控制台输出:

gulp task-name 2>&1 | tee output.log

双方将控制台输出保存到output.log在咕嘟咕嘟工作目录的根目录。