zl程序教程

您现在的位置是:首页 >  其他

当前栏目

SAP Spartacus 项目里的 ng-package.json

SAP项目JSONJSON Spartacus package NG
2023-09-14 09:02:53 时间

如果你发现自己要在多个应用中解决同样的问题(或者要把你的解决方案分享给其它开发者),你就有了一个潜在的库。 简单的例子就是一个用来把用户带到你公司网站上的按钮,该按钮会包含在你公司构建的所有应用中。

使用如下命令行创建 library:

ng generate library my-lib

当你生成一个新库时,该工作区的配置文件 angular.json 中也增加了一个 ‘library’ 类型的项目。下图是一个例子:

上图第464行,project 属性,指向一个 ng-package.json 文件:构建库时,ng-packagr 用到的配置文件。

其内容:

关于 ng-packagr 更多内容,请查阅这篇知乎文章:使用 ng-packagr 打包 Angular

为了让 Angular 类库应用范围更自由,Angular 提出一套打包格式建议名曰:Angular Package Format,包括 FESM2015、FESM5、UMD、ESM2015、ESM5、ES2015 格式,不同格式可以在不同的环境(Angular Cli、Webpack、SystemJS等)中使用。

传统方式需要对这些格式逐一打包,一个示例打包脚本写法。这种写法只能针对不同项目的配置,而且除非你了解这些格式的本质否则很难维护;后来社区根据 APF 规范实现了类库 ng-packagr,通过简单的配置可以将你的类库打包成 APF 规范格式。

要让库代码可以复用,你必须为它定义一个公共的 API。这个“用户层”定义了库中消费者的可用内容。该库的用户应该可以通过单个的导入路径来访问公共功能(如 NgModules、服务提供者和工具函数)。

库的公共 API 是在库文件夹下的 public-api.ts 文件中维护的。当你的库被导入应用时,从该文件导出的所有内容都会公开。请使用 NgModule 来暴露这些服务和组件。

更多Jerry的原创文章,尽在:“汪子熙”: