前端工程化1 开发环境配置


基础开发环境的规范是前端工程化的重要组成部分,本篇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

husky

使用commitizen更优雅的执行commit

commitizen是一种交互式生成commit message的工具

全局安装commitizen

npm install -g commitizen

初始化当前repo

commitizen init cz-conventional-changelog --yarn --dev --exact

然后使用git cz代替commit就可以了

git cz

summary

summary


Author: Maple
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source Maple !
  TOC