我使用 CLI 创建并捆绑了一个 Angular (7.2.0) 库:
ng g 库 MyLibrary
ng 构建 MyLibrary
这给了我my-libary.umd.js
我需要的捆绑包。
目前,所有依赖项都作为peerDependency 添加到库package.json 中。我想做的是将一些依赖项与库(.umd)实际捆绑在一起。将它们添加为“dependencies
“ 代替 ”peerDependencies
“似乎没有什么作用,我真的不明白有什么区别?
我怎样才能做到这一点?
应捆绑 ngx-spinner 的 package.json 示例
{
"name": "demo-plugin",
"version": "0.0.1",
"peerDependencies": {
"@angular/common": "^7.1.0",
"@angular/core": "^7.1.0"
},
"dependecies": {
"ngx-spinner": "^7.1.4"
},
"bundledDependencies": [
"ngx-spinner"
]
}
你想要的是将它添加到bundledDependencies
:
dependencies
:当其他人使用您的库时,NPM 会自动安装它们。此处列出的依赖项还需要在 ng-package.json 中列入白名单(“whitelistedNonPeerDependencies”)
peerDependencies
:你的库的用户必须安装依赖项(将其添加到他自己的 package.json 中)
bundledDependencies
:构建时,依赖项将与您的库捆绑在一起。这也将捆绑所有传递依赖项。如果你想停止这个链,你需要添加不应该捆绑的依赖项peerDependencies
。因此,例如,如果您想要捆绑依赖项 A,而它又依赖于 B,那么您将获得包含 A 和 B 的捆绑包。如果您不想捆绑 B,则可以将其添加到peerDependencies
.
您拥有的每个依赖项只能同时出现在其中一个依赖项中。因此,要捆绑依赖项,您需要将此依赖项添加到根目录的 package.json (而不是library-package.json)。你不应该做的是跑步npm install
在库文件夹内。如果你这样做npm install
在库文件夹内,并且根 package.json 中没有捆绑的依赖项(因此根 node_modules 文件夹中缺少它),您将获得成功的构建,但依赖项不会包含在构建中(cli 应该也许暗示这一点..)。
长话短说,针对您的具体问题:
- 从library-package.json 的“依赖项”部分中删除“ngx-spinner”
- 删除库中的node_modules文件夹(如果那里有的话)
- 将“ngx-spinner”添加为 root-package.json 的依赖项
- 构建库
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)