如何使用次要端点为 Angular 库创建 API
How to use secondary endpoints to create API for Angular library
场景:
我使用 ng-packagr
创建了自定义 UI 库,导出了自定义 components
和一些模型 classes。
问题:
在主项目中,import
语句适用于导出的组件,但不适用于导出的 classes 并且 webpack
无法编译并给出错误:
module not found error can't resolve my-custom-library/models
库项目代码:
型号class:src/app/modules/my-custom-module/models/my-model.ts
export class MyModel {
constructor() {
// default values for props here
}
// ...props here
}
索引文件:src/app/modules/my-custom-module/models/index.ts
export * from './my-model';
export * from './my-other-model';
在根目录导出文件:models.ts
export * from './src/app/modules/my-custom-module/models/index';
ng-packagr
根目录下的文件:public_api.ts
export * from './models';
export * from './src/app/modules/my-custom-module/my-custom-module.module';
export * from './src/app/modules/my-custom-module/components/index';
主要项目代码:
import {MyCustomModule} from 'my-custom-library'; // works
import {MyModel} from 'my-custom-library'; // works
import {MyModel} from 'my-custom-library/models'; // does not works
用途:
为终端开发人员简化和划分 UI 库 API。
我相信,我遗漏了一些关于映射 webpack
模块解析的东西,因为 VS Code 识别 import
,智能感知工作,甚至 Ctrl + Click
导航到正确的文件,但 webpack
编译失败。
我能够使用 Seconday End Points
实现所需的 API 模式。
学分:Alan Agius at Git Issue
场景:
我使用 ng-packagr
创建了自定义 UI 库,导出了自定义 components
和一些模型 classes。
问题:
在主项目中,import
语句适用于导出的组件,但不适用于导出的 classes 并且 webpack
无法编译并给出错误:
module not found error can't resolve
my-custom-library/models
库项目代码:
型号class:src/app/modules/my-custom-module/models/my-model.ts
export class MyModel {
constructor() {
// default values for props here
}
// ...props here
}
索引文件:src/app/modules/my-custom-module/models/index.ts
export * from './my-model';
export * from './my-other-model';
在根目录导出文件:models.ts
export * from './src/app/modules/my-custom-module/models/index';
ng-packagr
根目录下的文件:public_api.ts
export * from './models';
export * from './src/app/modules/my-custom-module/my-custom-module.module';
export * from './src/app/modules/my-custom-module/components/index';
主要项目代码:
import {MyCustomModule} from 'my-custom-library'; // works
import {MyModel} from 'my-custom-library'; // works
import {MyModel} from 'my-custom-library/models'; // does not works
用途: 为终端开发人员简化和划分 UI 库 API。
我相信,我遗漏了一些关于映射 webpack
模块解析的东西,因为 VS Code 识别 import
,智能感知工作,甚至 Ctrl + Click
导航到正确的文件,但 webpack
编译失败。
我能够使用 Seconday End Points
实现所需的 API 模式。
学分:Alan Agius at Git Issue