Какую оболочку использует npm при запуске сценариев npm?
У меня на винде работает рыбья оболочка через ConEmu. Fish по умолчанию не распознает оператор "&&", однако, имеет следующее:
"scripts": {
"test": "echo 'a' && echo 'b'"
}
и работает "NMP Run Test" работает. Поэтому я подумал, что он должен использовать по умолчанию "cmd", и это то, что npm config ls -l | grep shell
говорит, однако.... Когда я меняю "тестовый" скрипт на:
"scripts": {
"test": "echo 'a' && ls"
}
это тоже работает пока ls
явно не поддерживается в "cmd".
Что, черт возьми, здесь происходит?
2 ответа
Выглядит линия npm run
отправляет команду sh
Оболочка, которая обычно указывает на Bourne-совместимую оболочку по умолчанию. У меня нет опыта работы с вашим эмулятором, но я бы поспорил, что он использует bash
в вашей среде (поскольку Fish не совместима с Bourne).
Я не знаю, какая оболочка используется в вашем случае, и каков предпочтительный способ проверить, какая оболочка используется npm, но у меня есть несколько общих советов, которые могут помочь.
Ты можешь попробовать
{
"scripts": {
"test": "echo $0"
}
}
который может привести к таким результатам, как:
$ npm run test
> @ test /home/matmat/test
> echo $0
sh
(для Баш на Linux)
или же
C:\Users\qbolec\Documents\test>npm run test
> @ test C:\Users\qbolec\Documents\test
> echo $0
$0
в командной строке Windows Node.js.
Вы также можете попробовать
"test": "which ls"
чтобы получить больше информации.