可选的NPM依赖项安装

时间:2017-08-23 18:08:41

标签: typescript npm npm-install

我们有一个共享库,它为我们安装了所有的bootstraping代码。大多数人使用原始Javascript作为他们的前端,但也有一些人也使用Typescript。

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

1 个答案:

答案 0 :(得分:0)

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

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

  

<强> optionalDependencies

     

如果可以使用依赖项,但您希望npm继续执行   无法找到或无法安装,那么你可以把它放在   optionalDependencies对象。这是包名称到版本的映射   或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 参数将阻止可选的依赖项   正在安装。