Code, Learn

Impostare la shell predefinita per npm run-script su Windows

19 Giugno 2020 - 2 minuti di lettura

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"
}
Articolo scritto da