Impostare la shell predefinita per npm run-script su Windows
Spesso ci si trova nella condizione di dover eseguire uno script all’interno del package.json di un progetto npm in cui sono presenti comandi non supportati su Windows, ad esempio con gestione di variabili d’ambiente o esecuzione parallela di comandi, che sarebbero scomodi o impossibili da tradurre.
Per la rubrica i3 Tips vi illustrerò un modo semplice per configurare la shell di default per eseguire script attraverso npm run-script <command>
(1).
Se si provasse ad eseguire il comando npm run 'nome-script'
da un’altra shell, npm userebbe Command Prompt (cmd.exe) di Windows.
E’ necessario cambiare la configurazione di npm affinché venga usata una shell di default che non sia il Command Prompt.
Conoscere quali shell utilizza npm
Attraverso il comando $ npm config ls -l | grep shell
è possibile onoscere quali shell utilizza npm filtrandole dalla sua configurazione.
Impostare una diversa shell di default
Digitando il comando $ npm config set script-shell “C:\\Program Files\\Git\\git-bash.exe”
per impostare Git BASH (2) come shell di default (se installato).
Cambiando il percorso si potranno scegliere altre shell, come quella di Cygwin (3), o del Windows Subsystem for Linux (4) ovvero il sottosistema Linux installato su Windows.
Tornare alla shell iniziale
Per tornare alle impostazioni iniziali, si può eseguire il comando $ npm config delete script-shell
Un’alternativa direttamente da package.json
Alternativamente, se si preferisce usare una shell diversa solo per uno specifico script, sarà sufficiente aggiungere il nome della shell all’inizio dello script nel package.json, ad esempio (shell bash in grassetto):
"scripts": { "coverage": "npm run unit -- --coverage-report=text-summary", "unit": "bash CRUD_PATH=${CRUD_PATH:-crud-service} tap -b tests/*.test.js" }