избыточный вывод одной строки, рецепт Make-файла с несколькими командами - PullRequest
0 голосов
/ 06 января 2020

Я хотел бы прекратить вывод некоторых команд в моем 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

1 Ответ

1 голос
/ 06 января 2020

Я думаю, что эта команда неверна:

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 не имеет ничего сказать о выводе, который генерируют команды, которые вы запускаете. Если вы хотите подавить этот вывод, вы должны сделать это самостоятельно, используя обычные операции перенаправления оболочки. Например:

stagel:
        cd scripts && { npm list body-parser || npm install body-parser; } >/dev/null
        node scripts/app.js
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...