基础开发环境的规范是前端工程化的重要组成部分,本篇blog将介绍自动化代码格式化,git hook的简单使用,commit message标准化等内容
prettier 代码格式化工具
为了统一团队内的代码格式,需要制定一个格式化标准,prettier正是为了解决这种需求的工具。prettier使用方便,接近于零配置,可以很好的与前端项目进行集成。
安装prettier
yarn add --dev --exact prettier
创建.prettierrc.json
echo {}> .prettierrc.json
此时prettier只能进行手动格式化,为了实现自动化我们还需要husky和lint-staged
解释一下husky和lint-staged:
- husky是个git hook工具,可以帮助我们在pre-commit阶段自动化的执行一些任务
- lint-staged是一个过滤工具,为了提高性能,lint-staged过滤出被修改的文件用于后续任务
执行下面的命令
npx mrm@2 lint-staged
集成好这两个工具后看一下package.json
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"*.{js,css,md,ts,tsx}": "prettier --write"
},
在pre-commit阶段执行lint-staged获取被修改的文件,这里lint-staged配置了需要格式化的后缀,然后执行prettier –write,这样就实现了自动格式化
最后还要解决一下prettier与eslint的冲突问题
npm install --save-dev eslint-config-prettier
在esling config下加入prettier,告诉eslint我们在使用prettier
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest",
"prettier"
]
},
使用eslint进行静态检查
eslint是一种代码规范工具,提供了多种可配置的规范选项
安装eslint
yarn add eslint --dev
创建配置文件
yarn add eslint --dev
github上有很多配置好的config,可以根据自己的需要进行选择,比如airbnb
下面将eslint也继承到lint-staged内
"lint-staged": {
"**/*.{ts,tsx}": "eslint --fix"
},
使用commit-lint检测commit message
commit-lint是commit message强制检查工具,不符合标准的commit message将导致commit失败
首先安装commit-lint,这里默认使用conventional标准。
npm install --save-dev @commitlint/config-conventional @commitlint/cli
创建并写入配置文件
echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js
接下来将commit-lint集成到husky内,这里建议使用powershell执行,webstorm默认terminal有失败的可能
npx husky add .husky/commit-msg 'npx --no -- commitlint --edit "$1"'
看一下husky配置,已经有了commit-lint
使用commitizen更优雅的执行commit
commitizen是一种交互式生成commit message的工具
全局安装commitizen
npm install -g commitizen
初始化当前repo
commitizen init cz-conventional-changelog --yarn --dev --exact
然后使用git cz代替commit就可以了
git cz