从工程的角度谈一谈工具体系的规划
工具总论
遵循基本规则:现状与指标、方案、实施、结果和监控。
工具体系的目标
首先考虑:我们对工具本身的要求是什么?
1.考虑到工程行为都是团队合作,我们对工具最基本的要求就是:版本一致。
2.工具体系的另一个重要需求是:避免冲突
对于这两个要求的解决方案。这就需要引入一个新的概念:工具链。
工具链是一系列互相配合的工具,能够协作完成开发任务(注:工具链这个词最早是由 C/C++ 程序员引入的概念,一般包含编译、链接、调试等工具)
工具体系的设计
要想设计一个工具链,首先我们需要整理一下,前端开发大约要做哪些事
- 初始化项目;
- 运行和调试;
- 测试(单元测试);
- 发布。
那么,一个前端项目的工具链,大约就会包含这些功能。一个典型的社区项目工具链可能就类似下面这样:
- Yeoman
- webpack
- ava/nyc
- aws-cli
这显然不够,我们还需要一种机制,保证团队使用的工具版本一致
轻量级的做法是,在项目初始化模板中定义 npm script 并且在 npm dev-dependency 中规定它的版本号。
重量级的做法是,开发一个包装工具,在命令行中不直接使用命令,而使用包装过的命令。
工具体系的执行
简单不赘述,多是自动化
工具体系的监控
一般来说,以下指标跟开发者体验较为相关:
- 调试 / 构建次数;
- 构建平均时长;
- 使用的工具版本;
- 发布次数。
工具体系的监控不仅仅是衡量工具体系的好帮手,也是非常珍贵的研发数据,
工具的监控除了帮助我们改进工具体系,对研发体系的其它部分也有帮助。