InfoQ科技从 Angular转到 React,网易严选的前端工程化实践( 四 )
更多 schematics 知识:
优势
和常规的 JavaScript 脚本工具相比 , 它的优势在哪呢?
- 开发便捷
- 易于调试
- 可扩展性和可重用性
- 测试友好
schmatics 提供了完备的测试支持库 , 测试用例书写没有障碍 。
schematics 封装
既然 schematics 处理文件很友好 , 而且刚好能解决文件处理问题 , 于是我们就引入了 schematics 完成文件处理 , 并对它做了一层封装 。
本文插图
- 最底层主要依赖 @angular-devkit/schematics 和 @angular-devkit/core 提供 schematics 基础能力;
- 将公共能力提取到 @schematics/util 方便开发调用;
- 提供 schematics 开发模板 , 方便开发新建 schematics 包;封装 schematics 的 cli , 也就是说它也可以单独调用命令;
- 资源(通用资源、项目改造资源、模板升级资源等)会做一些整合 , 这些资源集合将作为物料维护在物料海 , 将来会跟我们正在开发的物料平台对接;
- 向上暴露所有的命令 , 最终在 @sharkr/cli 作为统一出口 。
本文插图
首先 , 对于开发者来说 , 需要做以下三步:
- 根据 schematics 规范开发一个 schematics 包
- 定义配置项(可选)
- 定义 schema 命令
- 使用 @sharkr/cli 调用 schematics 包
- 输入配置(可选)
- 完成项目修改
- @sharkr/cli 调用 @sharkr/schematics 插件
- schematics 插件解析出自定义配置项 , 生成用户会话
- 根据用户会话拿到 option , 传入 option 调用 Rule 函数
- 修改文件放到暂存区
- 确认修改后更新物理文件
schematics 实践
下面来看一个实际的例子:前段时间我们的项目都需要完成服务上云 , 为了实现上云 , 需要调整下 CI 脚本 , 还要往项目里放一些环境配置文件 , 涉及到多处文件修改和增加 , 所以我们写了一个 @sharkr/ng-cloud-add 的 schematics 包达到快速改造项目的目的 。 以下是效果:
本文插图
核心代码写起来跟写文档类似:
本文插图
以上就讲完了在开发 / 迭代过程中遇到的问题和解决方案 , 最后再看一下 CICD 阶段做了什么 。
- 琴雨聊科技|严屹宽自己理发,杜若溪穿睡衣素颜出镜,2岁女儿扎小辫太可爱
- 晨日科技捷报!晨日科技成功通过TATF16949质量管理体系认证
- 灵浮网络科技拼多多商家想快速提升自然流量,,怎么做?
- 这是个大科技号iPhone 12专用:紫米20W充电套装,不伤电池性价比高
- 科技圈 搭建全新 SIM 卡开放生态,中国移动产品创新开放合作论坛
- 科技有意思 mini火了,安卓厂商会推出小屏手机吗?,如果iPhone12
- 科技有意思 但iPhone12mini才是手机该有的样子,虽然不喜欢苹果
- 影客网络科技 大尺寸二维单晶材料在铜基底上的可控成长
- 科技数码迷 6S系列被放弃,苹果正在准备iOS15,一代神机iPhone
- 小城科技说 不是在回你消息,背后的原因个个扎心,微信显示“对方正在输入”
