Estoy en Windows ejecutando Fish Shell a través de ConEmu. Fish por defecto no reconoce el operador "&&", sin embargo , tiene esto:
"scripts": { "test": "echo 'a' && echo 'b'" } y ejecutar "npm run test" está funcionando. Así que pensé que debía estar usando el "cmd" predeterminado y esto es lo que npm config ls -l | grep shell dice, sin embargo... Cuando cambio el script de "prueba" a:
"scripts": { "test": "echo 'a' && ls" } esto también funciona mientras que ls claramente no es compatible con "cmd".
¿Qué diablos está pasando aquí? 😲
Looks line npm run envía el comando al shell sh , que generalmente apunta al shell predeterminado compatible con Bourne. No tengo experiencia con su emulador, pero apostaría a que está usando bash en su entorno (ya que Fish no es compatible con Bourne).
No sé qué shell se usa en su caso, ni cuál es la forma preferida de verificar qué shell está usando npm, pero tengo algunos consejos generales que podrían ayudar.
Puedes probar
{ "scripts": { "test": "echo $0" } }que puede producir resultados como:
$ npm run test > @ test /home/matmat/test > echo $0 sh(para bash en linux)
o
C:\Users\qbolec\Documents\test>npm run test > @ test C:\Users\qbolec\Documents\test > echo $0 $0en el símbolo del sistema de Windows Node.js.
También podrías intentar
"test": "which ls"para obtener más información.