multiple - cómo configurar shell para npm run-scripts en windows
npm run multiple scripts (5)
simplemente usando la forma de CMD para ejecutar .bat
!
.json
`` `js
"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/"
},
`` `
.murciélago
`` `sh
start http://localhost:7777/datas/ && start http://localhost:7777/Info/
`` `
Estoy ejecutando npm en Windows y me gustaría usar & estilo en operaciones paralelas en run-scripts, pero correr en paralelo en cmd es un poco complicado en mi archivo package.json que me gustaría escribir-
scripts: {"ir": "cmd1 y cmd2"}
pero npm ejecuta la secuencia de comandos bajo cmd.exe que no conoce; Podría cambiar esto a scripts: {"go": "bats / bat1.bat") donde bat1.bat es un archivo de murciélago cmd que usa la llamada de estilo de Windows o comandos de inicio para ejecutar comandos en paralelo. que funciona pero me da un script que solo funciona en Windows
Sería mucho más simple si pudiera hacer que npm ejecutara el script bajo un clon bash o cygwin. Intenté config: {"shell": "bash"} pero eso todavía corría cmd.exe
¿Hay alguna forma de decirle a npm que ejecute scripts usando un shell específico (no cmd.exe)?
Aquí hay una manera de hacerlo:
- Cree una secuencia de comandos, como my_script.sh, en el directorio bin de su proyecto.
En su archivo package.json, agregue una línea para ejecutar el script usando bash. Por ejemplo:
"scripts": { "boogie": "bash bin/my_script.sh" }
Ahora puedes ejecutar tu script bash desde npm de la siguiente manera:
npm run-script boogie
No es muy elegante, pero funciona.
Si está desarrollando tanto en Windows como en Linux / Unix, entonces al menos este enfoque es bastante portátil para ambos entornos.
Desde npm 5.1
npm config set script-shell "C://Program Files (x86)//git//bin//bash.exe"
Idealmente, anular el parámetro de configuración del shell npm debería funcionar, pero npm (al menos la versión 1.4.14) parece en Windows ignorar la configuración y usar cmd.exe en su lugar.
Usa el siguiente comando en tu shell bash o Git Bash para descubrir la configuración del shell:
$ npm config ls -l | grep shell
Por defecto, la salida será:
shell = "C://WINDOWS//system32//cmd.exe"
Sin embargo, para anular el parámetro de shell predeterminado, puede agregar (o editar) un archivo npmrc al directorio / Users / suNombreusuario / AppData / Roaming / npm / etc. Simplemente agregue la siguiente línea:
shell = "C://Program Files (x86)//git//bin//bash.exe"
La ruta que usa puede ser cualquier ruta válida a bash.exe. Ahora, si ejecuta el comando anterior "npm config ls -l | grep shell", verá el siguiente resultado, que indica que el parámetro del shell ha sido modificado:
shell = "C://Program Files (x86)//git//bin//bash.exe"
; shell = "C://WINDOWS//system32//cmd.exe" (overridden)
Un día, tal vez, una nueva versión de npm prestará atención al parámetro de shell anulado.
Use un node_module creado específicamente para este propósito. Sugiero usar npm-run-all , pero existen others , como parallelshell .
El ejemplo de Parallelshell está a continuación para reemplazar a su pregunta.
"scripts": {
"parallelexample1": "parallelshell /"echo 1/" /"echo 2/" /"echo 3/""
},
siguiente comando:
npm run parallelexample1
funciona tanto en Windows como en Unix (Linux / MacOS).
Curiosamente, npm-run-all no admite comandos de shell; por lo tanto, necesitamos poner todos los comandos de shell para separar los scripts como a continuación.
"scripts": {
"parallelexample2": "npm-run-all echo*",
"echo1": "echo 1",
"echo2": "echo 2",
"echo3": "echo 3"
},
Siguiente comando:
npm run parallelexample2
funciona tanto en Windows como en Unix (Linux / MacOS).