Я управляю двумя файлами package.json;один содержит специфичные для Windows скрипты, а другой - для bash.
Я использовал этот хак для переключения между ними (я на устройстве с Windows):
"shell:bash": "npm config set script-shell \"C:\\Program Files\\git\\bin\\bash.exe\"",
"shell:windows": "npm config delete script-shell",
Я пытался использовать файл .npmrc
в том же каталоге, что и файл package.json:
# .npmrc
script-shell = C:\Windows\System32\cmd.exe
Но это приводит к открытию нового приглашения cmd и ничего не запускается, поэтому скрипт "shell"хак. Вы можете себе представить, как трудно справиться с этим, но я не могу найти лучшего решения.
Я собираюсь попробовать использовать подсистему linux с собственным экземпляром node + npm, но я бы предпочел использовать оболочку bash для запуска файлов bash-совместимого package.json и оболочку Windows для запуска windows-совместимые файлы package.json.
Мне интересно, существует ли какое-либо соглашение для указания оболочки непосредственно в файле package.json? В любом случае это кажется лучшим местом для этого, поскольку ссылки на переменные в bash vs windows различны ($ npm_package_config_bash vs% npm_package_config_windows%).
"config": {
"script-shell": "C:\\Windows\\System32\\cmd.exe"
}
Как сохранить npm в оболочке, из которой он запущен?