前言
开始教程之前,我们先用5W法来了解下本文的基调。
What
CLI是command-line interface的缩写,用码农圈的黑话来说就是命令行界面。它有个好基友叫GUIGraphical User Interface-图形用户界面。两者区别自行脑补。
Why
先来灵魂三问:既然有方便直观的GUI,我们为什么要开发CLI呢;大部分能想到的功能需求,已经有了开源的CLI工具,为什么还要自己造轮子呢;明明想不出第三问,为什么非要凑个灵魂三问呢?
为了装B,为了装B,为了装B.
Who,When,Where
接下来就由我带领大家在此小小的装个X.
PS:鉴于文章篇幅较长,大家可以先看源码,结合源码的git log看文章。
项目依赖
我们先概览一下本教程中我们需要用的依赖库。
Babel:本教程使用最新JS语法,需要用Babel将代码转换为向后兼容的JS语法。
Commitizen: 用来规范我们的commit message。
Husky: Git hooks工具,配合Lint-staged和Eslint,在代码提交前做一些羞羞的事。
Lint-staged: 过滤出Git代码暂存区文件(被git add的文件)的工具。
Eslint: 代码检查工具,现在也干代码格式化的勾当。
初始化项目
什么也别说,先打开你的 Github 创建一个新的项目 skeleton-project-generator。
在这里复杂的啰嗦很多句,不想看的可以跳过本段,不影响开发。(一开始确实写了很多,但最后回过头来审文的时候发现又臭又长,就删了)大概意思就是,做的项目多了,每个项目都有相同的部分,每次都是通过复制一些通用的最佳实践部分创建项目,觉得很烦,于是就想维护一个项目模板项目,而通过项目模板创建项目也会有一些重复的操作,于是就又写了这个CLI工具来偷懒,不知道我说清楚了没…
打开一个你中意的命令行终端(推荐一下骚气逼人的Cmder),git clone
下我们创建好的项目。
项目克隆到本地后,用你的代码编辑工具(推荐使用Vscode,我下面的一些操作都以Vscode为基础)打开它。
配置EditorConfig
为了在多人协作时,保证项目在不同的编辑器或IDE中保持一致的编码样式,我们使用EditorConfig
来进行约束。
首先我们先给Vscode装上EditorConfig for VS Code
这个插件并启用,然后在项目根目录下添加一个新的文件:.editorconfig
# editorconfig.org
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false
[Makefile]
indent_style = tab
复制代码
我们先尝试进行一次对项目修改的git提交,你可以选择使用Sourcetree这样的GUI工具,也可以使用Git自带的CLI工具。具体命令我就不写了,不然就跑题跑得太远了。