首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何改变角10库的建库结构

如何改变角10库的建库结构
EN

Stack Overflow用户
提问于 2020-12-15 00:20:14
回答 2查看 1K关注 0票数 2

我正在维护一个角10常春藤库,我试图升级它,以利用二级环境点,但我遇到了问题的文件夹结构的最终构建。

理想情况下,文件夹结构将模仿@angular的文件夹结构:

代码语言:javascript
复制
-node_modules
 |
  -- @angular
     |
     --core
     --common
     --cli
     --material
     ...

我可以导入库的一些片段,如:import { someModule } from '@angular/core';

的文件夹结构生成当前库。

代码语言:javascript
复制
-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": "../.."将无法生成。

代码语言:javascript
复制
{
  "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
  "dest": "../../dist/myLibrary",
  "assets": [
    "quill/*.scss"
  ]
}

任何和所有的帮助都是感激的。

更新:项目结构是

代码语言:javascript
复制
-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文件只导出各自特性的模块和组件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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中。

票数 0
EN

Stack Overflow用户

发布于 2020-12-21 03:51:03

我有类似的文件夹结构,在我的库中我有一个输入,Button...etc,它被称为像你说的那样的特性。在ng-package.json中,我的设置如下:

代码语言:javascript
复制
{
  "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
  "dest": "../../dist/ngx-pluto",
  "lib": {
    "entryFile": "src/index.ts",
    "cssUrl": "inline"
  }
}

在我的特性table.module.ts中,我可以导入NpPaginatorModule特性,如下所示:

代码语言:javascript
复制
import { NpPaginatorModule } from '../paginator/index';

在我使用npm发布了我的库之后,我可以在我的消费项目中导入我的特性,如下所示:

代码语言:javascript
复制
import { NpButtonModule } from 'ngx-pluto';

以下是我的代码链接,仅供参考:https://github.com/KevinZhang19870314/pluto-ui

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65298351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档