Какую оболочку использует 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"

чтобы получить больше информации.

Другие вопросы по тегам