【问题标题】:Optional NPM dependency installation可选的 NPM 依赖安装
【发布时间】:2018-02-01 10:54:05
【问题描述】:

我们有一个共享库,它为我们安装了所有引导代码。大多数人在前端使用原始 Javascript,但也有少数人使用 Typescript。

是否可能 package.json 还包含仅适用于 Typescript 的依赖项列表(如所有 @types 和其他 Typescript 相关模块),只有在您提供特定标志时才会安装?即运行npm install 只会安装“普通”包,但npm install --some-flag 也会安装其他包。

【问题讨论】:

  • 用户如何在 他们的 package.json 中表达这一点?
  • 这就是我要问的。这有可能吗?也许像additionalDependencies这样的东西?

标签: typescript npm npm-install


【解决方案1】:

也许您正在寻找的是 optionalDependencies 和 --no-optional 标志的组合使用。

来自https://docs.npmjs.com/files/package.json

可选依赖项

如果可以使用依赖项,但如果它希望 npm 继续 找不到或者安装失败,可以放到 可选依赖对象。这是包名称到版本的映射 或 url,就像依赖项对象一样。不同之处在于 构建失败不会导致安装失败。

您的程序仍然有责任处理缺少的 依赖。例如,像这样:

try {
  var foo = require('foo')
  var fooVersion = require('foo/package.json').version
} catch (er) {
  foo = null
}
if ( notGoodFooVersion(fooVersion) ) {
  foo = null
}

// .. then later in your program ..

if (foo) {
  foo.doFooThings()
}

optionalDependencies 中的条目将覆盖同名条目 在依赖项中,所以通常最好只放在一个地方。

来自https://docs.npmjs.com/cli/install

--no-optional 参数将阻止可选依赖项 正在安装中。

【讨论】:

  • 有相反的情况吗?我希望默认行为不安装可选,并且仅在我提供标志时才安装可选
  • 我不知道这样的事情。如果它如此重要,那为什么不写一个这样做的脚本呢?
猜你喜欢
  • 2019-06-15
  • 1970-01-01
  • 2016-03-14
  • 1970-01-01
  • 1970-01-01
  • 2015-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多