我正在尝试在我的 Angular npm 包中创建一个我认为称为辅助入口点的东西。我想要下面两个入口
@scope/data-service
@scope/data-service/models
使用angular-cli生成基础包生成如下结构
scope
└───data-service
│ karma.conf.js
│ ng-package.json
│ ng-package.prod.json
│ package.json
│ tsconfig.lib.json
│ tsconfig.spec.json
│ tslint.json
│
└───src
│ public_api.ts
│ test.ts
│
└───lib
data-service.component.spec.ts
data-service.component.ts
data-service.module.ts
data-service.service.spec.ts
data-service.service.ts
基于 ng-packagr documentation您可以在名为 models 的数据服务下添加一个文件夹,然后将第二个 package.json
添加到该文件夹,但 ng-packagr 似乎使用与 angular-cli 略有不同的结构。理想情况下,我正在尝试对类似于 https://github.com/angular/angular/tree/master/packages/common 的结构进行建模但只要公开的是 @scope/data-service
和 @scope/data-service/models
我会很高兴。
当我尝试创建类似于 ng-packager 推荐的结构时,我得到了
错误 TS6059:文件“C:/projects/data-service-app/projects/scope/data-service/models/src/index.ts”不在“rootDir”下“C:\projects\”数据服务应用\项目\范围\数据服务\src'。 “rootDir”应包含所有源文件。
当我将模型目录移动到 data-service\src
目录时,我的入口点是
@scope/data-service
@scope/data-service/src/models
如何删除辅助入口点上的 src?
在使用 angular-cli 时,创建具有辅助入口点的库的正确方法是什么?
最佳答案
感谢您的回复。这是我最终得到的解决方案,它全部围绕正确设置 index.ts 和 public_api.ts 文件展开
\---projects
\---scope
\---ngx-package
| karma.conf.js
| ng-package.json
| ng-package.prod.json
| package.json
| tsconfig.lib.json
| tsconfig.spec.json
| tslint.json
|
\---src
| public_api.ts
| test.ts
|
+---lib
| package-client-config.ts
| package-client.spec.ts
| package-client.ts
| package.module.ts
|
\---models
| index.ts (1)
| package.json (2)
| public_api.ts (3)
|
\---src
| public_api.ts (4)
|
\---lib
| model-a.ts
| model-b.ts
|
\---hateoas
hateoas.ts
好的,所以在上面的树中注意里面有数字的括号,它们对应于下面的文件。
1)/projects/scope/ngx-package/src/models/index.ts
// export what ./public_api exports so we can reference models like
// import { modelA } from './models'
export * from './public_api';
2)/projects/scope/ngx-package/src/models/package.json
{
"ngPackage": {}
}
3)/projects/scope/ngx-package/src/models/public_api.ts
export * from './src/public_api';
4)/projects/scope/ngx-package/src/models/src/public_api.ts
export * from './lib/model-a';
export * from './lib/model-b';
export * from './lib/hateoas/hateoas';
使用此设置,您只需在一个地方维护导出列表。我尝试了很多其他变体,但都不起作用,这似乎没有问题。
关于angular-cli 库创建辅助入口点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50802447/