首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >滤光器输出的咕噜任务

滤光器输出的咕噜任务
EN

Stack Overflow用户
提问于 2017-02-06 20:00:26
回答 1查看 327关注 0票数 0

我有几个任务,在内部使用grunt-shell执行各种CLI命令。

我想隐藏这些CLI命令打印到输出控制台的某些日志。

我试着用grunt-reporter来做这个,但是无法让它正常工作。

Gruntfile.js

代码语言:javascript
复制
reporter: {
            shell:{
                options: {
                    tasks: ['shell'],
                    header: false
                }
            }
        }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-08 11:53:30

--简短的答案.-- grunt-reporter本身不可能隐藏由grunt-shell命令生成的日志。

长答案,包括解决办法.来自grunt-shell命令的日志是由grunt-shell/bash命令本身生成的,而不是通过节点包/脚本生成的。显示在示例主页上的grunt-reporter正在截取/操作写到stdout的节点包中的消息。

考虑以下几点..。

简单要点

代码语言:javascript
复制
module.exports = function(grunt) {

    grunt.initConfig({

        shell: {
            listFiles: {
                command: 'ls src/js/*.js'
            }
        }
    });

    require('load-grunt-tasks')(grunt);

    grunt.registerTask('default', [
        'shell:listFiles'
    ]);
};

通过CLI运行$ grunt输出如下所示:

Running "shell:listFiles" (shell) task src/js/a.js src/js/b.js src/js/c.js Done.

把头藏起来..。

利用grunt-reporter,可以使用以下配置来隐藏标题(在此场景中最多是这样):

代码语言:javascript
复制
module.exports = function(grunt) {

    grunt.initConfig({

        reporter: {
            shell: {
                options: {
                    tasks: ['shell:listFiles'],
                    header: false      
                }
            }
        },

        shell: {
            listFiles: {
                command: 'ls src/js/*.js'
            }
        }

    });

    require('load-grunt-tasks')(grunt);

    grunt.registerTask('default', [
        'reporter:shell', //<-- Note: The reporter task is called first.
        'shell:listFiles'
    ]);

};

通过CLI运行$ grunt现在将输出如下所示(注意:头部已被隐藏,但是ls命令中的日志由于直接来自bash/shell命令而保持不变)

src/js/a.js src/js/b.js src/js/c.js Done.

即使在将suppress: true添加到reporter选项之后,来自ls命令的路径仍将保持不变。

解决办法

我认为将日志隐藏在CLI命令中的唯一方法是在“grunt-shell”命令中将输出消息重定向到/dev/null

代码语言:javascript
复制
module.exports = function(grunt) {

    grunt.initConfig({

        reporter: {
            shell: {
                options: {
                    tasks: ['shell:listFiles'],
                    header: false,
                    
                }
            }
        },

        shell: {
            listFiles: {
                command: 'ls src/js/*.js > /dev/null' //<-- redirect the output messages
            }
        }

    });

    require('load-grunt-tasks')(grunt);

    grunt.registerTask('default', [
        'reporter:shell', //<-- Note: The reporter task is called first.
        'shell:listFiles'
    ]);

};

这一次,通过CLI运行$ grunt成功地隐藏了消息/日志,并且只有报告:

Done.

注意:添加> /dev/null只会重定向消息/日志,并且将继续报告任何错误。使用> /dev/null 2>&1也会隐藏任何错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42076249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档