我正在维护一个角10常春藤库,我试图升级它,以利用二级环境点,但我遇到了问题的文件夹结构的最终构建。
理想情况下,文件夹结构将模仿@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中的dest路径来删除第二个myLibrary/ng-package.json文件夹,但是我不知道如何删除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文件只导出各自特性的模块和组件。
发布于 2020-12-21 08:45:21
我找到了我的问题的答案。
我的问题是,我将我的库作为github依赖项而不是npm包导入到我的项目中。我这么做是因为Github允许用户免费托管私有存储库,但是NPM需要按月付费订阅私有包,因此我们公司的工作是增加我们的私有库的依赖性,比如"my-library": "git+ssh://git@github.com/myOrg/my-library.git#semver:10.2.7"。实际上,当您没有实现次要入口点时,这是可行的,因为您的主要入口点指向一个定义文件,该文件使用所有库特性构建,并具有指向这些特性的适当标志。
当您尝试实现辅助入口点时,构建模块的结构将成为一个问题,因为在搜索表示次要入口点的附加package.json文件时,ng-packagr不会遍历模块结构中的单个层。在阅读https://github.com/npm/npm/issues/2974之后,npm似乎不支持从子目录中安装项目,而只是查找它在存储库中找到的第一个package.json文件,并将其作为模块安装。这给了我奇怪的文件夹结构,因为存储库实际上是一个mono,托管了我的库、一个演示项目和一个e2e测试项目。由于没有支持的方法来单独安装其中的一个项目,所以我可能的解决方案仅限于将库拆分到它自己的Github中,或者编写一个postinstall脚本,将node_modules/myLibrary/dist/myLibrary的内容复制/粘贴到node_modules/myLibrary中。
发布于 2020-12-21 03:51:03
我有类似的文件夹结构,在我的库中我有一个输入,Button...etc,它被称为像你说的那样的特性。在ng-package.json中,我的设置如下:
{
"$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
"dest": "../../dist/ngx-pluto",
"lib": {
"entryFile": "src/index.ts",
"cssUrl": "inline"
}
}在我的特性table.module.ts中,我可以导入NpPaginatorModule特性,如下所示:
import { NpPaginatorModule } from '../paginator/index';在我使用npm发布了我的库之后,我可以在我的消费项目中导入我的特性,如下所示:
import { NpButtonModule } from 'ngx-pluto';以下是我的代码链接,仅供参考:https://github.com/KevinZhang19870314/pluto-ui
https://stackoverflow.com/questions/65298351
复制相似问题