如何在package.json中动态选择包管理器

时间:2017-04-15 03:18:26

标签: npm package.json yarnpkg npm-scripts

我目前正在使用yarn作为我的包管理员,但我团队中的某些人仍可能使用npm。我在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,它都会有效,它会使用他们选择的包管理器吗?

1 个答案:

答案 0 :(得分:3)

您可以使用变量npm_execpath,它将指向用于运行脚本的包管理器。

例如,这将输出yarnnpm的版本:

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