Se hai script personalizzati nel tuo file package.json, come "npm my-script" o "yarn my-script", funzioneranno solo con il gestore di pacchetti che definisci. Ma NPM offre un'API per chiamare ogni volta l'eseguibile corrente, senza specificarlo esplicitamente.
{
"scripts": {
"cleanup": "./clean-up.js",
"copy": "./copy.js",
"prepare": "npm run cleanup && npm run copy"
}
}
Usando $npm_execpath
Usando la stringa "$npm_execpath" invece di "npm" o "yarn" (o un altro gestore di pacchetti come "pnpm"), questo script funzionerà con ogni gestore di pacchetti, indipendentemente da ciò che lo sviluppatore attuale ha utilizzato per chiamare lo script originale .
{
"scripts": {
"cleanup": "./clean-up.js",
"copy": "./copy.js",
"prepare": "$npm_execpath run cleanup && $npm_execpath run copy"
}
}
È compatibile su tutte le macchine?
Purtroppo, l'utilizzo di "$npm_execpth" per far funzionare gli script con qualsiasi gestore di pacchetti non funziona in modo affidabile su macchine su cui è installato Windows.
Qual è il modo più affidabile per chiamare gli script in package.json?
Pertanto, il modo più affidabile per chiamare gli script personalizzati nel file package.json è ancora quello di definire esplicitamente l'eseguibile del gestore di pacchetti e assicurarsi che il team utilizzi solo quello.
È meglio sui dispositivi che non eseguono Windows, dove puoi usare "$npm_execpath" per eseguire in modo affidabile quegli script.