首页 > 解决方案 > 将 Angular 9 模块转换为库

问题描述

我有一个大型 Angular 9 应用程序,目前正在生产服务器上运行。

我的任务是将应用程序分解成一个带有可插入组件的主应用程序外壳。

假设我有这个树结构:
|-- main
    |-- core
        |
        |-- 抽象
            |-- 模型
                |-- 映射属性类.ts
                |-- json-objects.ts
                |-- 抽象模型.ts
            |-- 组件
                 |-- 抽象基础组件.ts |
        - - components //实现抽象基础组件
        |-- 服务

我想生成一个包含相同结构的库。

所有关于生成库的博客和教程最终都有一个文件夹,其中包含 src/lib 文件夹和 src 文件夹内的 public-api.ts 文件,我从 lib 文件夹中导出每个单个 .ts 文件。

我尚未阅读完成示例库的文章,我可以从中:

import {MappedPropertyClass, JsonObject} from '@core-lib/models/abstract';

我在 node_modules 文件夹中看到可以做到这一点,所以我只需要任何可以让我走上构建库的正确路径的信息。

我想正确地启动它,所以当需要插入库模块时,我不必拆除和重构主应用程序。

任何帮助,将不胜感激。

谢谢...

标签: angulartypescriptshared-libraries

解决方案


好吧,我终于找到了答案。

它不漂亮,但它有效。

基于此博客:[构建 Angular 库的最佳方式][1]

必须将三个文件添加到要导出的每个文件夹中:

package.json
index.ts
public-api.ts

在 public-api.ts 中,导出您要共享的每个代码文件:

export MappedPropertyClass from './mapped-property-class';
export JSONObject from './JsonObject';

在 index.ts 中导出 public-api.ts 的内容。

export * from './public-api';

所以,在我上面的列表中,这些文件将放在abstract/modelsabstract/components中。

现在,我可以在我的测试应用程序中导入:

import { MappedPropertyClass } from '@soccs/root/core/lib/abstract/models';

推荐阅读