32

在项目中,我使用命令angular 6创建了角度库。在我的库中,我有一个需要的组件,所以我添加了它。angular cling g lierary @some/libName@ng-bootstrap/ng-bootstrapnpm i --save @ng-bootstrap/ng-bootstrap

当我尝试使用命令构建库时,ng build @some/libName --prod它会引发以下错误。

Dependency @ng-bootstrap/ng-bootstrap must be explicitly whiteliste

有人解决了吗?

4

2 回答 2

58

更新

此警告来自ng-packagr现在有一部分关于此的 ng-packagr 文档)。结果ng-packagr只是告诉你它希望你将所有依赖项添加到一个"allowedNonPeerDependencies": []属性中ng-package.json(这个选项曾经被称为"whitelistedNonPeerDependencies")。例如:

{
  "allowedNonPeerDependencies": [
    "tslib",
    ...
  ]
}

原来的

我自己也遇到了这个。这个警告来自ng-packagr我认为(angular-cli 依赖于生成和打包库)。我不确定他们所说的“白名单”是什么意思,因为在 ng-packagr 的文档中似乎没有直接解释该措辞,但是ng-packagr 存储库中的这个问题对于如何工作有很多不同的选择围绕问题。

  1. Peers(比如 Angular、RxJS):在这个用例中,第三方依赖是你库的 peerDependency。您的库的用户需要在他们的依赖项部分中包含您的库和第三方库。
  2. 嵌入(例如遗留的 JS 库):您有一个遗留的 JavaScript 库(例如,专有后端的适配器)并且您希望(需要)将遗留代码嵌入到您的库中。在这种情况下,第三方依赖项是您的库的 devDependency 并将嵌入到您的库的捆绑包中。
  3. 混合模式 - 嵌入和对等(例如 UX 指南、Angularized 样式指南):在此用例中,第三方依赖项是 peerDependency,但也(部分)嵌入到您的库中。您可能希望在您的库中重用来自第三方库的现有 CSS/SCSS/LESS 样式表,从而在您的库中“嵌入”来自第三方的代码。同时,第三方依赖是你库的一个 peerDependency。

github问题对此有更多信息。

于 2018-05-19T14:17:58.857 回答
24

添加了这个ng-package.json,它对我有用

{
  "$schema": "./node_modules/ng-packagr/ng-package.schema.json",
  "lib": {
    "entryFile": "public_api.ts"
  },
  "whitelistedNonPeerDependencies": [
    "."
  ]
}
于 2018-12-05T09:05:32.233 回答