取消单行输出,多命令Makefile配方

问题描述 投票:0回答:1

我想取消我的Makefile中某些命令的输出

例如,我有一个目标,stagel

stagel:
    cd scripts && npm list body-parser || npm install body-parser
    node scripts/app.js

我想抑制目标中第一行的输出。

我尝试过,@cd scripts && npm list body-parser || npm install body-parser,但仍然得到输出。我也尝试将@附加到每个npm命令,但得到@npm: command not found

npm makefile output
1个回答
0
投票

我认为此命令不正确:

cd scripts && npm list body-parser || npm install body-parser

这表示,“运行cd scripts:如果cd有效,则运行npm list body-parser,如果cd失败,则运行npm install body-parser”。我不知道您要确定要做什么,但是我怀疑您想说的是,“首先cd scripts,然后运行npm list body-parser,如果失败,则运行npm install body-parser”。为此,您需要这样的东西:

cd scripts && { npm list body-parser || npm install body-parser; }

尚不清楚您的意思是“支持第一行的输出”。您的意思是,您不希望make打印出正在运行的命令行吗?还是您的意思是,您不想显示命令的输出?

如果是前者,那么您的尝试@cd ...将会做到。既然您对此不满意,我只能假设您是指后者。

Make对于您运行的命令生成的输出无话可说。如果要抑制该输出,则必须使用常规的Shell重定向操作自己进行操作。例如:

stagel:
        cd scripts && { npm list body-parser || npm install body-parser; } >/dev/null
        node scripts/app.js
© www.soinside.com 2019 - 2024. All rights reserved.