第一个问题
你收到该错误是因为你的测试项目在node_modules/
目录下没有安装那些依赖项。但我认为按照@Renato的建议,强制库的用户手动安装这些依赖项是错误的做法。
为了让缺失的依赖项自动安装,需要在库本身的两个地方(内部)添加你的库的第三方依赖项:必要的:
- 在库的根目录下的
package.json
文件。我相信你已经完成了这个步骤。将所有软件包放在此处,确保在开发时只有一个根目录下的node_modules/
目录。
projects/entity-selector/package.json
是构建库时 Angular 生成的 package.json 文件的基础文件。必须在此处添加依赖项,以便库的使用者知道他们(好吧,他们的软件包管理器)需要下载哪些软件包。我相信这是你目前缺少的内容。
第二个问题
在适当地将我的依赖项添加到这两个位置后,我收到了构建错误提示,告诉我应该为我的库使用"peerDependencies"而不是"dependencies"。
这对我的用例不适用,所以为了绕过它,我不得不明确地列出我的依赖项。根据你使用的以下哪个选项,做法略有不同:
projects/entity-selector/package.json
projects/entity-selector/ng-package.json
在projects/entity-selector/package.json
中应该是:
{
"$schema": "../../../node_modules/ng-packagr/package.schema.json",
"ngPackage": {
"lib": {
"entryFile": "public_api.ts"
},
"dest": "../../../dist/mycomponents/entity-selector",
"whitelistedNonPeerDependencies": [
"mycomponents/shared-services",
"mycomponents/spinner",
"mycomponents/text-input"
]
}
}
在 projects/entity-selector/ng-package.json
文件中应该是:
{
"$schema": "./node_modules/ng-packagr/package.schema.json",
"lib": {
"entryFile": "public_api.ts"
},
"whitelistedNonPeerDependencies": [
"mycomponents/shared-services",
"mycomponents/spinner",
"mycomponents/text-input"
]
}
最后,不要忘记使用
ng build --prod
来构建您的项目,否则当您尝试发布到NPM时,您将收到关于新的Ivy编译器的错误
error!