本文主要介绍如何做好前端的项目规范,包含但不限于git提交规范,包管理器规范,命名的规范,代码风格的统一等等。项目规范做的好,可以大大提升大家的工作效率,反之会严重影响工作效率。
项目规范做的不好的后果
- 我用
yarn本地代码无法运行,用npm才可以正常运行。 - 我本地因为
node版本原因,代码无法运行。 - 什么,你跑不起来?我这里是可以的呀。
eslint与prettier规则互相冲突,裂开。lint规则形同虚设- 流水线构建才发现代码
build error,开始慌了。 - 项目的
git提交信息五花八门,完全看不懂每一个commit做了啥。 - 项目的命名规范(文件夹,文件,组件,变量,函数)五花八门,真乱呀。
- 代码风格不统一,改一行代码,结果整个文件风格全变,不利于
code review。 - ......
以上是我在日常工作中经常遇到的一些现象,由此可见项目规范的重要性
解决思路
我的理解其实就是用一些手段做好一致性,抹除差异性;提升开发效率与质量。
- 抹平大家的差异性(开发环境,个人编码风格等等)。
- 提升开发效率与质量(ts,eslint等等)。
如何做
-
统一包管理器的使用
目前的包管理器有npm、cnpm、yarn、pnpm等,我们可以选择任何一种。但是在项目中我们必须统一包管理器,否则会有一些意想不到的问题。
为达到该目的,我们可以借助工具 only-allow 来统一项目使用的包管理器。 在package.json中增加preinstall钩子即可{ "scripts": { "preinstall": "npx only-allow npm" } } -
限制node版本
利用 package.json 中engines字段设置 node 版本,搭配engine-strict来强制检查。
// package.json
{
"engines": {
"node": ">=16.0.0"
},
}
.npmrc 文件设置 engine-strict=true
engine-strict=true
这样设置之后,其他人在安装依赖的时候,如果node版本不符合要求,就会报错。
-
git提交规范
约定式提交 它提供了一组简单规则来创建清晰的提交历史。
我们可以使用 commitlint 来配置与校验commit信息。- 如何配置
使用各种各样的 配置文件 来进行配置,比如commitlint.config.js、.commitlintrc.js等等。 - 配置规则
这里是所有可配置的规则 。 - 共享配置
我们可以将我们的配置发布到npm,供他人使用;我们也可以使用社区他人提供的配置。比如 @commitlint/config-conventional, @commitlint/config-angular 等等。 - 我的配置方案
安装依赖
配置文件npm install --save-dev @commitlint/config-conventional @commitlint/cli
如何检验commit是否符合我们的配置// commitlint.config.js module.exports = { extends: ["@commitlint/config-conventional"], };commitlint -e
- 如何配置
-
Change log
Change Log是发布新版本时,用来说明与上一个版本差异的文档。
该功能对于一些提供基础能力的项目尤为重要,像react,vue等等都有自己的Change Log文档。
我们当然可以手动去维护该文档,每次发布新版本的时候,去补充对应的版本说明;但是这样太麻烦了,我们完全可以利用工具帮我们做到。- 安装依赖
npm install --save-dev conventional-changelog-cli - 配置命令
{ "scripts": { "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s" } }生成的文件会包含版本,时间,以及对应的
commit提交信息。 - 安装依赖
-
husky
husky 是一个 npm 包,它可以让我们使用 git 钩子变得非常简单。- 安装依赖
npm install husky --save-dev - 启动husky
npx husky install该步骤完成之后,项目会多一个 .husky 的文件夹 - 配置 prepare
上面的启动 husky 只是让我们自己本地生效,那么团队中的其他同学不启动的话,依然没有作用。所以我们需要在依赖安装的时候自动启动husky,因此我们需要配置prepare// package.json { "scripts": { "prepare": "husky install" } } - 配置git钩子
比如我们可以在commit-msg阶段校验我们的commit信息是否符合规范;在pre-commit阶段校验代码格式等等。 - 配置
commit-msg钩子
npx husky add .husky/commit-msg "npx commitlint -e"
- 安装依赖
更多好文
文章预告
后面会出第二篇文章,主要介绍如何利用 lint 工具做好项目规范,包含 eslint、prettier、stylelint、lint-staged等等
写在最后
本文主要介绍了如何做好项目规范,并给出了一些工具来帮我们去做好这个事情。至于工具的更多用法没有过多涉及,感兴趣的同学可以前往官网自行查看。工作中根据项目的不同,灵活使用这些工具来做好项目规范,提升开发效率与质量。