手摸手教学之-用node实现一个CLI工具

前言

开始教程之前,我们先用5W法来了解下本文的基调。

What

CLIcommand-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-stagedEslint,在代码提交前做一些羞羞的事。

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工具。具体命令我就不写了,不然就跑题跑得太远了。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享