繁体   English   中英

有条件地包含依赖 package.json

[英]Conditionally Include Dependency package.json

我在 npm 项目中有一个仅 Mac OS 需要的依赖项,并且想知道是否有某种方法可以仅在兼容平台是运行npm install平台时有条件地包含此依赖项。

我愿意为此编写逻辑。 在以下情况下grunt-appdmg导致 npm 安装过程出错(出于相当明显的原因):

'/dev/cuttle/node_modules/grunt-appdmg/node_modules/appdmg/node_modules/ds-store/node_modules/macos-alias/build'
  CXX(target) Release/obj.target/volume/src/volume.o
../src/volume.cc:9:2: error: #error This platform is not implemented yet
 #error This platform is not implemented yet

包.json

{
  "name": "Cuttle",
  "homepage": "https://github.com/oakmac/cuttle",
  "license": "MIT",
  "repository": {
    "type": "git",
    "url": "https://github.com/oakmac/cuttle.git"
  },
  "dependencies": {
    "fs-extra": "0.16.3",
    "open": "0.0.5",
    "winston": "0.8.3"
  },
  "devDependencies": {
    "grunt": "0.4.5",
    "grunt-contrib-less": "0.11.4",
    "grunt-contrib-watch": "0.6.1",
    "grunt-curl": "2.0.3",
    "grunt-download-atom-shell": "0.10.0",
    "grunt-appdmg": "0.2.0",
    "winresourcer": "0.9.0",
    "moment": "2.9.0",
    "shelljs": "0.3.0"
  }
}

您可以使用可选的依赖项。

像这样在你的 package.json 中:

"optionalDependencies":{
  "grunt-appdmg":"0.2.0"
}

有关NPM 文档的更多信息

如果失败, npm install将跳过它。

让我来介绍精选的,可以让你的目标和过滤多个依赖。 我写这个是为了加速 CI 阶段,这些阶段只需要 devDependencies 的一个片段,但最终会有更多的用例。 这个项目相当实验 - 请留下一些反馈。

安装

在您的系统上安装:

npm install handpick --global

用法

运行命令:

handpick [options]

-V, --version
-T, --target
-F, --filter
-M, --manager
-P, --path
-h, --help

例子

package.json文件中定义非官方依赖项:

{
    "lintDependencies":
    {
        "eslint": "6.8.0",
        "eslint-config-redaxmedia": "2.0.0"
    },
    "testDependencies":
    {
        "chai": "4.2.0",
        "mocha": "7.1.1"
    }
}

安装lintDependencies

handpick --target=lintDependencies

通过 YARN 安装devDependencieslintDependencies

handpick --target=devDependencies --target=lintDependencies --manager=yarn

安装devDependenciestestDependencies

handpick --target=devDependencies --filter=testDependencies

在路径中安装dependenciesdevDependencies

handpick --path=../shared

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM