1

我目前正在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 clearor yarn clear。由于当前编写的脚本,没有yarn安装的人会遇到错误。

有没有办法让我写这个package.json,这样无论有人运行npm build还是运行它都可以工作yarn build,并且它会使用他们选择的包管理器?

4

1 回答 1

3

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

例如,这将输出yarnor的版本npm

"scripts": {
  "version": "$npm_execpath -v",
}
$ npm run version
> 3.10.10
$ yarn run version
> 0.21.3
于 2017-04-15T09:02:56.203 回答