角度库bundle依赖项



我已经使用CLI创建并捆绑了一个Angular(7.2.0)库:

吴克图书馆我的图书馆

吴恩达建立我的图书馆

这给了我需要的my-libary.umd.js捆绑包。

目前,所有依赖项都作为 peerDependencies 添加到库包 package.json 中。我想做的是实际上将一些依赖项与库(.umd)捆绑在一起。将它们添加为"dependencies"而不是"peerDependencies"似乎不起作用,我真的看不出有什么区别?

我该怎么做?

包.json 的示例,其中 ngx 微调器应该捆绑在一起

{
"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 中列入白名单("白名单非对等依赖项")

peerDependencies:库的用户必须安装依赖项(将其添加到他自己的package.json中)

bundledDependencies:在构建库时,依赖项将与库捆绑在一起。这也将捆绑所有传递依赖项。如果要停止此链,则需要添加不应捆绑到peerDependencies的依赖项。例如,如果要捆绑依赖 A,它依赖于 B,则会得到一个包含 A 和 B 的捆绑包。如果您不希望捆绑 B,请将其添加到peerDependencies中。

您拥有的每个依赖项应同时出现在其中一个依赖项中。因此,要捆绑依赖项,您需要将此依赖项添加到根目录的 package.json(而不是 library-package.json)中。您不应该做的是在库文件夹中运行npm install。如果您在库文件夹中npm install并且根包.json 中没有捆绑的依赖项(因此根 node_modules 文件夹中缺少它),您将获得成功的构建,但依赖项不会包含在构建中(cli 应该可能暗示这一点..)。

长话短说,针对您的特定问题:

  1. 从library-package.json的"依赖项"部分删除"ngx-spinner"
  2. 删除库中的node_modules文件夹(如果有)
  3. 将"ngx-spinner"作为依赖项添加到root-package.json
  4. 构建库

我认为您正在寻找的是:https://github.com/ng-packagr/ng-packagr/blob/HEAD/docs/dependencies.md#whitelisting-the-dependencies-section

白名单非对等依赖

最新更新