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

使用如下命令行创建 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的原创文章,尽在:“汪子熙”:

SAP Spartacus 项目里的 ng-package.json相关推荐

  1. SAP Spartacus 项目里的 .env-cmdrc 文件

    项目根目录下有一个文件名为 .env-cmdrc: 在 package.json 里定义如下的 script: "build:ssrdev": "env-cmd --no ...

  2. SAP Spartacus cxOutlet里的元数据存储,outlet名称和待渲染Component的映射关系

    cxOutlet合集 SAP Spartacus自定义指令cxOutlet的工作原理 SAP Spartacus table cell如何通过cxOutlet在运行时动态注入组件 SAP Sparta ...

  3. SAP Spartacus cxOutlet 里的 templatesRefs 的填充逻辑

    cxOutlet合集 SAP Spartacus自定义指令cxOutlet的工作原理 SAP Spartacus table cell如何通过cxOutlet在运行时动态注入组件 SAP Sparta ...

  4. 如何查看 SAP Spartacus PageLayoutComponent 里的 template$ 的值

    SAP Spartacus PageLayoutService.ts 里的 templateName$ get 操作:返回一个 Observable 对象,包裹的类型为 string. pipe 的第 ...

  5. SAP Spartacus url里默认electronics-spa的由来

    单步调试时密切关注url的变化,初始url为localhost:4200: 这个electronics-spa即使在后台没有连通的情况下也能用,说明肯定不是从后台返回的: 这篇文章SAP Sparta ...

  6. SAP Spartacus store里引用的library是如何编译出来的

    看一个基于SAP Spartacus library开发的storefront Angular应用的依赖: "@spartacus/assets": "^2.1.0&qu ...

  7. 使用 selector 从 SAP Spartacus state 里读取 Cart 数据

    选择器 selector 是用于获取存储状态 state 切片的纯函数. @ngrx/store 提供了一些帮助函数来优化这个选择. 选择器在选择状态切片时提供了许多功能. 使用 createSele ...

  8. SAP Spartacus PagelayoutComponent里的section和slot

    Page包含slots,slots包含Components. Spartacus使用page template来组织slots和Components. 一个page template包含了一些可被全局 ...

  9. SAP Spartacus单元测试里Component实例的创建细节

    启动命令:ng test storefrontlib 单元测试里,使用TestBed创建Component实例的源代码: 首先在Chrome开发者工具里找到单元测试用例的实现源代码: 在_karma_ ...

最新文章

  1. Android记事本开发02
  2. 记录一下从标定模型中读取参数
  3. 优化标定的加入与实现
  4. Linux文件目录操作指令
  5. Hbuilder 左侧项目栏文件打开方式(单击?双击?) - 设置篇
  6. 团队管理(1)---故事与哲理(一)
  7. java实现远程唤醒一台计算机
  8. pong_计算机视觉与终极Pong AI
  9. 兰州大学计算机基础在线考试,[兰州大学]《计算机基础》2020年5月考试在线考核试题...
  10. 【笔记】(python)写入文件:写入空文件、写入多行、附加到文件
  11. cron每小时执行一次_crontab每小时运行一次
  12. keystone 存储 android,KeyStone存储器架构
  13. 工具用法有道云笔记: Mac和Windows上有道云笔记更换背景方法--202205更新
  14. php 2038年,php如何取2038年后的时间戳|php时间日期处理到2038年之后该怎么办 - PS下...
  15. 手把手带你入门深度学习(一):保姆级Anaconda和PyTorch环境配置指南
  16. matlab进行动力吸振器设计,干摩擦动力吸振器的MATLAB仿真及其基于频谱分析的优化设计...
  17. ckplayer 网页视频播放
  18. 查看系统时间和硬件时间
  19. malloc内存分配字节对齐问题
  20. 怎么在CAD编辑软件中批量打印图纸

热门文章

  1. 数据预处理代码分享——机器学习与数据挖掘 1
  2. Confluence 6 使用 JConsole 监控本地 Confluence
  3. windows桌面快捷方式图标上面怎么老是会产生一个问号解决方案
  4. 14nm芯片技术突破 中国集电关键装备实现从无到有
  5. 第二十四周项目5-应用枚举
  6. springboot scheduled多线程
  7. python基本运算
  8. 团队作业—系统设计和任务分配
  9. Python_python内置函数
  10. 【bzoj1044】[HAOI2008]木棍分割 二分+dp