Я думаю, что эта команда неверна:
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