2017-04-15 156 views
0

我目前使用yarn作爲我的包管理器,但我的團隊中有些人仍可能使用npm。我在package.json如何在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" 
} 

如果我想打電話給clear其他腳本里面寫了幾個劇本,我必須要麼使用npm clearyarn clear。由於該腳本目前正在編寫,所以沒有安裝yarn的用戶將會遇到錯誤。

有沒有辦法讓我編寫這個package.json,這樣無論有人運行npm build還是yarn build,它都會使用他們選擇的軟件包管理器?

回答

2

您可以使用變量npm_execpath,它將指向用於運行腳本的包管理器。

例如,這將輸出的yarnnpm版本:

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

這正是我要找的。謝謝, – davidhu2000