Angular 10.2.2
版本。
我使用这个 page 创建了 Angular 库 my-lib
。在我的库中,我在其中一个内部 NPM 包 devDependency
上有 my-comp.web
。
在我的图书馆中,我有 imports
如下
import { MyWebModule } from "my-comp.web/sdk/angular";
import { myWeb } from "my-comp.web/sdk";
如果我使用 ng build
即 Ivy library
构建这个库,创建它的 NPM 包,然后在另一个 Angular 应用程序中使用这个 NPM 包,这个应用程序的构建工作正常。
现在 Angular 建议在禁用 Ivy
的情况下构建库,因此当我使用 ng build --prod
构建相同的库代码并在应用程序中使用此库时,我在构建此应用程序时遇到以下错误。
ERROR in The target entry-point "my-lib" has missing dependencies:
- my-comp.web/sdk/angular
- my-comp.web/sdk
应用程序的 package.json
有 devDepencency
的 my-comp.web
。
我已经尝试了 StackOverflow 上建议的所有内容,包括删除 node_modules
并重新安装它,但没有任何效果。我可以知道我在这里遗漏了什么吗?
答案 0 :(得分:1)
如果在运行时需要,您不应将依赖项添加为 devDependency。 npm documentation 清楚地说明了 devDependencies 的用途:
<块引用>如果有人计划在他们的程序中下载和使用您的模块,那么他们可能不想或不需要下载和构建您使用的外部测试或文档框架。
devDependencies 仅在您不传递 --prod 标志时安装。因此,当您构建应用程序时,它会失败,因为它没有库中使用的依赖项/导入。
因此,我建议您将依赖项添加为库中的 peerDependency,并在应用程序中添加为普通依赖项。