我有一个包含许多独立组件的 Angular 库。其中一些组件依赖于第三方库(angular2-draggable、@fortawesome/angular-fontawesome 等)。我的目标是可以在应用程序中使用此库,但只为应用程序中实际使用的组件添加依赖项。
例如,该库包含以下组件:
- 福
- 栏(取决于 angular2-draggable)
在消费应用程序中,如果我仅使用组件 Foo,则我不想依赖 angular2-draggable。我该怎么做?
似乎正确的方法是添加 angular2-draggable 作为可选的对等依赖项,如下所示:
"sideEffects": false,
"peerDependencies": {
"angular2-draggable": "^16.0.0"
},
"peerDependenciesMeta": {
"angular2-draggable": {
"optional": true
}
}
该库将顺利构建和发布。一切都按预期安装在使用应用程序中。但在启动应用程序时,我收到以下错误:
Error: Module not found: Error: Can't resolve 'angular2-draggable'
即使使用应用程序中根本没有使用 Bar,情况也是如此。我如何确保只需要所需的依赖项?
可选依赖项仅当您的库中有多个入口点时才真正起作用。
如果您的库中有一个包含 Foo 和 Bar 的桶文件,它确实会像您看到的那样失败。
您的解决方案是有一个单独的 lib 入口点
Bar