You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
$ npm i eslint-loader eslint-plugin-html --save-dev
修改 ESlint 配置文件:
//.eslintrc.json"plugins": [
"html"
]
在 webpack 中引入 eslint-loader:
//webpack.config.jsmodule.exports={// ... other optionsmodule: {rules: [// only lint local *.vue files{enforce: 'pre',test: /\.vue$/,loader: 'eslint-loader',exclude: /node_modules/},// but use vue-loader for all *.vue files{test: /\.vue$/,loader: 'vue-loader'}]}}
title: 实践严格的代码风格检查来保证代码质量
categories:
tags:
toc: true
date: 2017-5-24 22:29:11
工作之后,代码洁癖越来越重;团队协作时,不同人的代码交织在一起,编码风格冲突问题更显突出。我们需要一套严格的代码风格检查流程来确保代码质量,保证多人协作项目的代码也能整洁统一高可读。
1. 使用 ESlint 检查 JavaScript
ESlint 是目前非常流行、已被广泛应用的 JavaScript 检查工具。我们可以根据自己的喜好定制一套 ESlint 配置,并在项目中对代码风格进行检查,辅助代码规范执行,提高代码质量。
1.1 在 webpack 中集成 ESlint
定制好 ESlint 的配置文件之后,在命令行可以直接调用 ESlint 进行代码检查(参见 Command Line Interface)。一般来说,我们会在
package.json
中添加一个 lint 的 npm task。如下配置后,运行
npm run lint
即可进行 ESlint 检查。但是,每次都手动检查带来了一定的执行成本。我们很难要求团队每个人都能勤检查,所以要尽量部署一些半强制的自动检查措施来时时提醒,约束行为,养成习惯。将 ESlint 集成进 webpack 可以在每次打包时都在终端和 devtool console 中打印出检查结果,增强约束效果(通过插件为编辑器集成 ESlint 功能,在编写时实时提醒更为有效)。
以 Vue 项目为例:
安装
eslint-loader
,eslint-plugin-html
。修改 ESlint 配置文件:
在
webpack
中引入eslint-loader
:集成后,每次打包都会输出 ESlint 检查结果:
如果写出了不合要求的代码,终端、浏览器……都会不停的蹦出提示烦你,烦你烦到受不了的去改正了,约束代码风格的目的就达到了。
1.2 抽象出团队共享的配置文件
团队需要制定统一的规范,ESlint 提供功能可以将配置文件抽出并复用。ESlint 配置文件中有一个名为
extends
的属性值,可以从其他配置文件进行继承操作。我们可以将定义好的配置文件抽出成一个 npm 包,将其发布到 npm 仓库中。例如:eslint-config-wdfe。他人想要使用该配置时,执行:
随后在本地配置文件中写入:
即可。
使用 npm 托管规则文件还可以方便的进行版本迭代。规则有更改?大家重新 npm i 一下就可以更新了。将该 npm 包集成进团队项目脚手架中,可以在项目创建时就做好 ESlint 检查的准备。
1.3 自动修正与例外规则
ESLint 提供部分自动修正功能。某些易修复、不会影响代码逻辑的风格检查项:如缩进、空格等,ESlint 可以自动将不合格代码修改为符合规范的代码,省去很多体力活。当然像代码命名等与代码逻辑紧耦合的检查项 ESlint 是不敢自己改的。推荐在检查时默认就加上
--fix
参数,无痛。有时会遇到一些尴尬情景,比如用 webpack 的 ProvidePlugin 插件注入的全局变量,直接使用无法通过 ESLint 的
no-undef
规则。调用后端接口时某些参数不是驼峰写法,此时会触发camelcase
规则。这些本不是我们的错或者没办法改的错,再一直提醒就很碍眼了。我们可以选择性的让 ESlint 忽略他们。如上图所示,使用指定格式的注释即可在指定场景关闭 ESlint 检查。更多注释写法可以参考 Disabling Rules with Inline Comments
2. 使用 git-hook 在提交代码时做强制检查
编辑器集成 lint、webpack 集成 lint 这些都是建议手段,假如开发者完全忽视,是可以将脏代码提交进仓库的。我们可以使用 git-hook 再加一层保险,在 commit 时自动做 ESlint 检查,不通过就不让提交!
安装 pre-commit:
在
package.json
中加入任务:这样就会在 commit 时自动跑一次
npm run lint
了。如果出现 erorr,ESlint 会返回 1 而非正常通过的 0,此时提交就会终止。3. 养成更多良好的代码风格
我认为一个有追求的工程师应该时刻关注自己的代码风格,毕竟这是自己的脸面,也是自己的一个象征。从一个人的代码可以窥见一个人的性格。除了 ESlint 的检查项,还有很多代码风格可供参考,举几个例子:
我个人是一个洁癖较严重的人,从不吝啬于给自己加各种约束,希望自己能写出干净的代码。如果你也想尝试更多规范,建议参考一下百度 FEX 的 styleguide。
4. 参考资料
The text was updated successfully, but these errors were encountered: