如何动态地选择的package.json包管理器

问题描述 投票:1回答: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 clearyarn clear。由于剧本目前正在写的,不具有yarn谁装谁都会碰到一个错误。

有没有办法为我写这篇package.json,使其无论工作,如果有人运行npm buildyarn build,它会使用自己选择的包管理器?

npm package.json yarnpkg npm-scripts
1个回答
3
投票

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

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

"scripts": {
  "version": "$npm_execpath -v",
}
$ npm run version
> 3.10.10
$ yarn run version
> 0.21.3
© www.soinside.com 2019 - 2024. All rights reserved.