【问题标题】:how to dynamically select package manager in package.json如何在 package.json 中动态选择包管理器
【发布时间】:2017-09-11 07:42:16
【问题描述】:

我目前使用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,它都能正常工作,并且它会使用他们选择的包管理器?

【问题讨论】:

    标签: npm package.json yarnpkg npm-scripts


    【解决方案1】:

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

    例如这会输出yarnnpm的版本:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-13
      • 1970-01-01
      • 2011-08-31
      • 2012-04-12
      • 1970-01-01
      • 1970-01-01
      • 2021-11-10
      • 1970-01-01
      相关资源
      最近更新 更多