angular - 将 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 文件夹中看到可以做到这一点,所以我只需要任何可以让我走上构建库的正确路径的信息。
我想正确地启动它,所以当需要插入库模块时,我不必拆除和重构主应用程序。
任何帮助,将不胜感激。
谢谢...
解决方案
好吧,我终于找到了答案。
它不漂亮,但它有效。
基于此博客:[构建 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/models和abstract/components中。
现在,我可以在我的测试应用程序中导入:
import { MappedPropertyClass } from '@soccs/root/core/lib/abstract/models';
推荐阅读
- node.js - 如何在浏览器中隐藏 api 请求有效负载?
- matlab - 在 MATLAB2016b 中显示符号方程
- python - tf.test.is_gpu_available() 返回 false
- mysql - Laravel Eloquent 从一组中获取第一行
- python - 我可以重复使用需要用户输入的 docker 容器吗?使用 docker 容器启动时出现 EOF 错误
- c# - 在不同页面上使用 MVVM 链接两个类
- python - TypeError:无法转换 numpy.object_ 类型的 np.ndarray。它显示支持的文件有:float64、float32 等
- python - 使用 Python 通过 VPN 连接到数据库
- javascript - (Google Chrome 错误?)为什么有时不会触发 pointerover 和 document pointerup 事件?
- java - Apache FTPSClient 挂起数据传输