依赖@ng-bootstrap/ng-bootstrap 必须明确列入白名单
Posted
技术标签:
【中文标题】依赖@ng-bootstrap/ng-bootstrap 必须明确列入白名单【英文标题】:Dependency @ng-bootstrap/ng-bootstrap must be explicitly whiteliste 【发布时间】:2018-10-22 17:17:29 【问题描述】:在angular 6
项目中,我使用angular cli
命令ng g lierary @some/libName
创建了角度库。在我的库中,我有一个需要@ng-bootstrap/ng-bootstrap
的组件,所以我通过npm i --save @ng-bootstrap/ng-bootstrap
添加了它。
当我尝试使用命令 ng build @some/libName --prod
构建库时,它会抛出以下错误。
Dependency @ng-bootstrap/ng-bootstrap must be explicitly whiteliste
有人解决了吗?
【问题讨论】:
【参考方案1】:更新
此警告来自ng-packagr
(and there's now a section of the ng-packagr docs about this)。原来ng-packagr
只是告诉您它希望您将所有依赖项添加到ng-package.json
中的"allowedNonPeerDependencies": []
属性(此选项过去称为"whitelistedNonPeerDependencies"
)。
例如:
"allowedNonPeerDependencies": [
"tslib",
...
]
原创
我自己也遇到了。我认为这个警告来自ng-packagr
(angular-cli 依赖于它来生成和打包库)。我不确定他们所说的“白名单”是什么意思,因为在 ng-packagr 的文档中似乎没有直接解释这种措辞,但this issue in the ng-packagr repo 有很多不同的选项来解决这个问题。
Peers(比如 Angular、RxJS):在这个用例中,第三方依赖是你库的 peerDependency。您的库的用户需要在他们的依赖项部分中同时包含您的库和第三方库。 嵌入(例如旧版 JS 库):您有一个旧版 javascript 库(例如,专有后端的适配器)并且您希望(需要)将旧版代码嵌入到您的库中。在这种情况下,第三方依赖项是您的库的 devDependency,并将嵌入到您的库的捆绑包中。 混合模式 - 嵌入和对等(例如 UX 指南、Angularized 样式指南):在此用例中,第三方依赖项是 peerDependency,但也(部分)嵌入到您的库中。您可能希望在您的库中重用来自第三方库的现有 CSS/SCSS/LESS 样式表,从而在您的库中“嵌入”来自第三方的代码。同时,第三方依赖是你库的一个 peerDependency。
The github issue 有更多相关信息。
【讨论】:
您还需要将其添加到ng-package.prod.json
,以便能够使用--prod
构建库。
我只需要将dependencies
中的条目列入白名单,而不是devDependencies
中的条目
该条目需要添加到 ng-package.json 中的 whitelistedNonPeerDependencies 数组中,而不是 package.json 中
太棒了。这很简单而且很容易。提前致谢【参考方案2】:
在ng-package.json
中添加了这个,它对我有用
"$schema": "./node_modules/ng-packagr/ng-package.schema.json",
"lib":
"entryFile": "public_api.ts"
,
"whitelistedNonPeerDependencies": [
"."
]
【讨论】:
以上是关于依赖@ng-bootstrap/ng-bootstrap 必须明确列入白名单的主要内容,如果未能解决你的问题,请参考以下文章
Android Gradle 插件Gradle 依赖管理 ⑤ ( dependencies 依赖项拆分 | 依赖组 | 依赖名称 | 依赖版本号 | 动态指定依赖版本号 | 使用命令行查看模块 )
Android Gradle 插件Android 依赖管理 ④ ( 常用依赖配置分析 | implementation 依赖作用 | api 依赖作用 | compileOnly 依赖作用 )
Maven 依赖管理 -- 依赖配置 & 依赖传递 (概念 & 依赖传递冲突问题 & 可选依赖(不透明) & 排除依赖(不需要))
TestNg依赖高级用法之强制依赖与顺序依赖------TestNg依赖详解
Android Gradle 插件Android 依赖管理 ⑥ ( 依赖冲突处理 | transitive 依赖传递设置 | exclude 依赖排除设置 | force 强制指定依赖库 )