2017-04-15 2 views
0

J'utilise actuellement yarn comme mon gestionnaire de paquets, mais certaines personnes de mon équipe peuvent toujours utiliser npm. J'ai écrit quelques scripts dans package.jsoncomment faire pour sélectionner dynamiquement gestionnaire de paquets dans package.json

"scripts": { 
    "clear": "rm -Rf app/javascripts/* & rm index.html", 
    "watch": "yarn clear | NODE_ENV=development webpack -w --env.dev", 
    "build": "yarn clear && yarn dev && yarn start", 
    "dev": "yarn clear | NODE_ENV=development webpack --env.dev", 
    "prod": "yarn clear | NODE_ENV=production webpack --progress --env.prod" 
} 

Si je veux appeler clear dans d'autres scripts, je dois utiliser soit npm clear ou yarn clear. Comme le script est actuellement écrit, quelqu'un qui n'a pas yarn installé se heurtera à une erreur.

est pour moi il y a une façon d'écrire ce package.json afin qu'il fonctionne, peu importe si quelqu'un court npm build ou yarn build, et il utilisera le gestionnaire de paquets de leur choix?

Répondre

2

Vous pouvez utiliser la variable npm_execpath, elle pointera vers le gestionnaire de paquets utilisé pour exécuter le script.

Par exemple, cette volonté de sortie de la version yarn ou npm:

"scripts": { 
    "version": "$npm_execpath -v", 
} 
$ npm run version 
> 3.10.10 
$ yarn run version 
> 0.21.3 
+0

qui est exactement ce que je cherche. Je vous remercie, – davidhu2000