Я запускаю npm в Windows и хотел бы использовать параллельные операции & style в сценариях выполнения, но параллельная работа в cmd в моем файле package.json выглядит беспорядочно, я бы хотел написать -
scripts: { "go": "cmd1 & cmd2"}
но npm выполняет сценарий под cmd.exe, который не знает, что ;
я могу изменить его на сценарии: { "go": "bats/bat1.bat")
где bat1.bat - это файл cmd bat, который использует вызов стиля Windows или команды запуска для параллельного запуска команд. который работает, но дает мне сценарий, который работает только в Windows.
Было бы намного проще, если бы я мог заставить npm запускать скрипт под клоном bash или cygwin.
Я пробовал,
config: { "shell": "bash"}
но cmd.exe все еще запускался
Есть ли способ указать npm запускать скрипты с использованием определенной оболочки (не cmd.exe)?
Ответы:
Начиная с npm 5.1
npm config set script-shell "C:\\Program Files (x86)\\git\\bin\\bash.exe"
или (64-битная установка)
npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"
Обратите внимание, что вам необходимо установить git для Windows .
Вы можете вернуть его, запустив:
источник
npm config set script-shell "C:\\Program Files\\Git\\bin\\bash.exe"
это ответ на все мои проблемы с запуском параллельных скриптов в 64-битной Windows 10. @DuncanSungWKim 감사 합니다 за это.npm run <script
с этой конфигурацией, запускаются новые окна git bash, запускающие скрипт. Я не этого хочу. Есть ли способ просто вызвать оболочку в вызывающей оболочке?npm config set script-shell bash
поскольку расположение bash.exe, вероятно, находится вPATH
Вот один из способов сделать это:
В файле package.json добавьте строку для запуска скрипта с помощью bash. Например:
"scripts": { "boogie": "bash bin/my_script.sh" }
Теперь вы можете запустить свой bash-скрипт из npm:
Не очень элегантно, но работает.
Если вы разрабатываете как в Windows, так и в Linux / Unix, то, по крайней мере, этот подход достаточно переносим в обе среды.
источник
"scripts": { "start": "node ./bin/www", "bash": "bash -c", "ls": "npm run bash ls" }
В идеале переопределение параметра конфигурации оболочки npm должно работать, но npm (по крайней мере, версия 1.4.14), похоже, в Windows игнорирует параметр и вместо этого использует cmd.exe.
Используйте следующую команду в оболочке bash или Git Bash, чтобы узнать настройку оболочки:
По умолчанию вывод будет следующим:
shell = "C:\\WINDOWS\\system32\\cmd.exe"
Однако, чтобы переопределить параметр оболочки по умолчанию, вы можете добавить (или отредактировать) файл npmrc в каталог \ Users \ yourusername \ AppData \ Roaming \ npm \ etc. Просто добавьте следующую строку:
shell = "C:\\Program Files (x86)\\git\\bin\\bash.exe"
Используемый путь может быть любым допустимым путем к bash.exe. Теперь, если вы запустите указанную выше команду «npm config ls -l | grep shell», вы увидите следующий вывод, указывающий, что параметр оболочки был переопределен:
shell = "C:\\Program Files (x86)\\git\\bin\\bash.exe" ; shell = "C:\\WINDOWS\\system32\\cmd.exe" (overridden)
Возможно, однажды новая версия npm обратит внимание на переопределенный параметр оболочки.
источник
$ npm config set shell "C:\\msys64\\usr\\bin\\bash"
;
Windows, в папке C: \ Users \ username \ Я добавил.npmrc
файл, содержащийshell = "C:\\Program Files\\Git\\bin\\bash.exe" script-shell = "C:\\Program Files\\Git\\bin\\bash.exe"
Для этой цели используйте специально созданный node_module. Я предлагаю использовать npm-run-all , но есть и другие , например, параллельная оболочка .
Ниже приведен пример Parallelshell для замены по вашему вопросу.
"scripts": { "parallelexample1": "parallelshell \"echo 1\" \"echo 2\" \"echo 3\"" },
следующая команда:
работает как в Windows, так и в UNIX (Linux / MacOS).
Интересно, что npm-run-all не поддерживает команды оболочки; поэтому нам нужно поместить все команды оболочки в отдельные сценарии, как показано ниже.
"scripts": { "parallelexample2": "npm-run-all echo*", "echo1": "echo 1", "echo2": "echo 2", "echo3": "echo 3" },
Следующая команда:
работает как в Windows, так и в UNIX (Linux / MacOS).
источник
--parallel
вариантпросто используя способ CMD для запуска
.json.bat
!
.летучая мышь"scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test --env=jsdom", "eject": "react-scripts eject", "app": "cd build & browser-sync start --server --files 'index.html'", "bat": "start start-browser.bat", "starts": "start http://localhost:7777/datas/ && start http://localhost:7777/Info/" },
источник
В моем случае мне просто нужно было бежать
npm start
из Bash. Я бегу,cmd
затем открываю bash"c:\Program Files\Git\bin\bash.exe"
. Затем под оболочкой bash я смог позвонитьnpm build
иnpm start
успешно.Возможно, у вас уже есть bash, если вы используете Git. Если нет, вы можете установить его.
Надеюсь, это поможет кому-то сэкономить время.
источник
PORT=8000
Вы также можете использовать кроссплатформенную оболочку powershell https://github.com/powershell/powershell#get-powershell для сценариев npm.
Чтобы установить для одного проекта, запустите это из корневой папки проекта:
npm config set script-shell pwsh --userconfig ./.npmrc
Чтобы установить глобально для всех проектов узлов:
npm config set script-shell pwsh [--global]
источник