
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
今天昆明达内培训机构小编跟大伙一起谈谈:团队的痛点以及基于yeoman generator的设计思路;然后会详细介绍如何实现定制的generator,过程中遇到的问题和解决办法。
痛点一:工程创建不智能
代码目录文件手工拷贝
不同场景的工程对目录结构的要求不尽相同
痛点二:规范约束难以统一集成
难以在新的工程项目中集成新的规范,需要手动加hook
缺少增量机制对旧项目集成
基于Yeoman generator的设计思路
我们需要给每个工程类型的项目创建一个generator。按照目前前端技术栈的发展情况来看,一个团队一般会有3~5个generator。把这些generator看成一个个的服务,通过工具上层的CLI命令来暴露给开发者使用。
下面我准备开发一个适用于Now直播活动类搭建的脚手架了,名字是generator-now-activity
自定义generator的目录结构
扩展generator
在generator的外层index.js文件里,通过继承yeoman-generator来扩展我们自己的generator,然后模块暴露给外部。
Yeoman的运行周期
一个Yeoman Generator被创建后(构造函数必然是最先被调用的),会依次调用它原型上的方法,且每一个方法中的this都被绑定为Generator实例本身,调用的顺序如下:
initializing -初始化一些状态之类的,通常是和用户输入的options或者arguments打交道,这个后面说。
prompting -和用户交互的时候(命令行问答之类的)调用。
configuring -保存配置文件(如.babelrc等)。
default -其他方法都会在这里按顺序统一调用。
writing -在这里写一些模板文件。
conflicts -处理文件冲突,比如当前目录下已经有了同名文件。
install -安装依赖
end -结束部分
与用户交互
Yeoman提供了API来让generator和用户进行交互,直接通过this.prompts函数,它的内部实现是使用了Inquire.js。
模板拷贝策略
对于工程src目录部分直接通过深度优先算法拷贝写入。对于工程的规范类、配置的文件需要单独写入,这一类可能需要接受用户的输入,同时需要集中进行维护,因此需要和src的拷贝方式进行区分。
generator和其它工具如CLI集成
前面提到的yo now-activity的方式使用可能存在一些问题,因为这种方式要求代码必须上传到github上。对于公司内部的工具,不走正常的开源流程显然是不被允许的。那么,有没有什么方法,不添加generator到Yeoman的generator列表里就能够使用呢?
幸运的是,Yeoman提供了yeoman-environment来帮助我们在其它工具中集成编写好的generator,yo其实也只是yeoman-environment暴露到上层的一个命令而已。
今天的讲述到这里就结束了,如果您对昆明达内培训机构小编所讲述的内容有简介或更好的理解,欢迎大家一起讨论!