【发布时间】:2021-03-25 15:26:38
【问题描述】:
我正在维护一个 Angular 10 Ivy 库,我正在尝试升级它以使用辅助入口点,但我在最终构建的文件夹结构方面遇到了问题。
理想情况下,文件夹结构将模拟 @angular 的文件夹结构:
-node_modules
|
-- @angular
|
--core
--common
--cli
--material
...
我可以导入库的片段,例如:import { someModule } from '@angular/core';
我当前的库是用一个文件夹结构构建的
-node_modules
|
--myLibrary
|
--package.json
--dist/myLibrary
|
--package.json
--public_api.ts
--myLibrary.d.ts
--feature1
--feature2
--feature3
...
这迫使我导入 import { feature1Module} from 'myLibrary/dist/myLibrary/feature1'; 等功能。
我知道我可以通过更新myLibrary/ng-package.json 中的dest 路径来删除第二个myLibrary 文件夹,但是我不知道如何删除dist 文件夹以使所有内容都建立在同一级别上, 因为设置 "dest": "../.." 将无法构建。
{
"$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
"dest": "../../dist/myLibrary",
"assets": [
"quill/*.scss"
]
}
感谢所有帮助。
更新: 项目结构是
-projects
|
--myLibrary
|
--package.json
--ng-package.json
--src
|
--public_api.ts
--commonFunctions
--feature1
|
--package.json
--src
|
--public_api.ts
--index.ts
--feature1.component.ts
--feature1.component.html
--feature1.module.ts
--feature2
--feature3
...
我的projects/myLibrary/src/public_api.ts只导出commonFunctions中的功能,而每个功能文件夹中的public_api.ts文件中的每个文件都只导出各自功能的模块和组件。
【问题讨论】:
-
功能模块1是从库公共api导出的吗?如果是这样,它可以只是像 import { featuremodule1 } from “my-library” 这样的导入吗?这类似于从某个 dist 路径导入核心 Angular 模块(如 httpclient)。
-
不,feature1 仅通过它自己的 public_api.ts 文件导出。据我了解,如果 feature1 是从库的主要 public_api.ts 导出的,那么无论该项目是否实际使用了 feature1,都会始终将 feature1 导入到消费项目中。这会破坏使用辅助入口点的目的。
-
在角度的情况下,每个
@angular/*是一个单独的包。如果您通过my-package/pkg1提供多个包裹,您可能会实现该文件夹结构。不然。此外,除了在一个地方收集您自己制作的多个包之外,拥有这种结构也没有任何意义 -
@Sergey,感谢您的回复!请查看
@angular/material库。我的最终目标是允许从myLibrary/feature1导入,类似于@angular/material允许从@angular/material/buttons导入。阅读 ng-packagr 中关于辅助端点的文档,这应该是可能的 (github.com/ng-packagr/ng-packagr/blob/master/docs/…)
标签: angular directory-structure angular10 angular-library