首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用ng-packagr制作角单回库

用ng-packagr制作角单回库
EN

Stack Overflow用户
提问于 2021-04-23 07:06:36
回答 3查看 760关注 0票数 0

我有下面的单回购文件夹结构为我的应用程序。

我在app1/app2中使用library1和library2,也将这两个库分别发布为.tgz,供其他角度应用程序使用。

I使用ng-packagr编译和打包角包格式的角库。

若要使用以下命令创建库:

代码语言:javascript
复制
   **ng build --library1**

   **npm pack**

目录/angular.json

代码语言:javascript
复制
"projects": {
     "library1": {
        "root": "libs/library1",
        "sourceRoot": "libs/library1/src",
        "projectType": "library",
        "prefix": "library1",
        "architect": {
            "build": {
                "builder": "@angular-devkit/build-ng-packagr:build",
                "options": {
                    "tsConfig": "libs/library1/tsconfig.lib.json",
                    "project": "libs/library1/ng-package.json"
                },
                "configurations": {
                    "production": {
                        "project": "libs/library1/ng-package.prod.json"
                    }
                }
            }
            }

目录/libs/library1 1/ng-Package.json中

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

我需要的是:

  1. 现在,我想将library1和库2结合起来,创建一个可能是libraryAll(libraryAll.tgz)的库,它将导出libray1和库2。
  2. 此外,我需要一个共享模块,它将由两个库使用,并将成为最终库包的一部分。
EN

回答 3

Stack Overflow用户

发布于 2021-05-01 00:38:12

我认为,首先,您需要创建多项目的结构,角提供。您可以通过ng generate libng generate application命令生成库和应用程序。

那么你可以为你的孩子打包。查看这个以获得更多信息:https://izifortune.com/multiple-packages-repository-with-angular/

票数 0
EN

Stack Overflow用户

发布于 2021-05-01 15:57:20

要将两个库组合成一个库,我建议您创建第三个库,它导入前两个库并使用不同的index.ts公开它。如果您想要以各种方式单独维护它,请使用此方法。

第一个库和第二个库都需要在第三个库使用和公开之前进行编译。

例如。LibraryAllModule,出口Library1Module和Library2Module。

index.ts看起来将是:

代码语言:javascript
复制
export { LibraryAllModule } from './libs/libraryAll/library-all.module';
export { Library1Module } from './libs/library1/library1.module';
export { Library2Module } from './libs/library2/library2.module';

或者另一种方法是将来自两个库的代码报告到一个按模块划分的新库中。

index.ts将如下所示:

代码语言:javascript
复制
export { LibraryAllModule } from './libs/libraryAll/library-all.module';
export { Library1Module } from './libs/libraryAll/library1/library1.module';
export { Library2Module } from './libs/libraryAll/library2/library2.module';

通过将这两个库组合成一个公共库,您还可以更容易地将一个公共模块放在两者之间共享。您可以在文件夹'libraryAll‘中声明它,然后在两个库中导入它。

票数 0
EN

Stack Overflow用户

发布于 2021-05-03 11:10:14

谢谢你的建议。

我使用ng packagr 辅助入口点特性解决了这个问题。

库1中,我使用了现有的库2,并创建了另一个共享库库3

现在我可以为libraryAll发布包含libray 1、libray 2和libray 3的包。

我也能出版个别的图书馆。

吴氏二次点

我遇到的唯一主要阻止程序是库1中的导入路径(库-3),而库2则抛出构建错误,当路径位于入口点文件夹之外时,我得到了rootDir问题。我实现的解决方案是从节点模块导入它并发布最终的库。

下面的链接将解释二级入口点的结构。

目前的结构是

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

https://stackoverflow.com/questions/67225441

复制
相关文章

相似问题

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