前端使用工具强制实行代码规范(Vue)
前端使用工具强制实行代码规范(Vue)
场景
非强制性的规范都不会成为真正的规范。在之前,我们也会在团队内编写一些开发规范文档,却总是不能真正有效的执行下去,原因何在?
- 其一,人是健忘的,就算真正看完了规范文档,也不可能记住每一条规范,并且在代码中正确实践。
- 其二,人是懒惰的,即便有着规范,但只要写代码的时候没有强制性,那总是不会在意的。
那么,使用自动化的工具是为首选,而前端恰好有了一些可用的工具来帮助我们。
ESLint
ESLint 是一个对 JS 低级错误进行修复的工具,甚至于,现在连 TypeScript 官方也抛弃 TSLint 转向这个工具了,因为它的生态更大,实现的规则数量远远多于 TSLint,能把 JS 中的大部分低级错误检测出来,并能自动修复其中一部分。
安装依赖
1 | npm i -D eslint babel-eslint eslint-plugin-vue @vue/cli-plugin-eslint |
依赖解释
eslint
: 本体包babel-eslint
: eslint 与 babel 整合包eslint-plugin-vue @vue/cli-plugin-eslint
: eslint 与 vue 整合包
进行配置
1 | // .eslintrc.js |
如果有需要忽略的文件也可以在 .eslintignore 文件中进行配置
1 | // .eslintignore |
添加脚本
1 | // package.json |
运行脚本
1 | npm run lint:js |
现在,你可以检测到代码中的问题,并修复它了。
相关链接
WebStorm 配置 ESLint 即时检查:
参考: https://stackoverflow.com/questions/28808857
StyleLint
StyleLint 是一个用来对 CSS 进行校验/修复的工具,和 ESLint 类似,但却针对 CSS 方面。我们使用它用来避免一些不好的 CSS 写法,也能避免 code review 时被其他人吐槽。。。
安装依赖
1 | npm i -D stylelint stylelint-config-standard stylelint-order stylelint-scss |
依赖解释
stylelint
: 本体包stylelint-config-standard
: stylelint 标准配置stylelint-scss
: stylelint scss 支持插件包stylelint-order
: stylelint 属性排序插件
进行配置
1 | // stylelint.config.js |
添加脚本
1 | // package.json |
运行脚本
1 | npm run lint:css |
相关链接
WebStorm 使用
WebStorm 配置 StyleLint 即时检查:
参考 https://stackoverflow.com/questions/54304313/添加外部工具以进行快速修复
然后添加一个快捷键即可
Prettier
Prettier 是一个代码格式化工具,但并非针对一种语言,对 HTML/CSS/JavaScript/Vue/SCSS
都有效果。可以通过配置文件在不同项目间统一代码格式化,以修正不同编辑器/IDE 之间格式化不同的问题。
安装依赖
1 | npm i -D prettier eslint-plugin-prettier eslint-config-prettier prettier-eslint-cli stylelint-config-prettier stylelint-prettier |
依赖解释
prettier
: 本体包eslint-plugin-prettier eslint-config-prettier prettier-eslint-cli
: prettier 与 eslint 整合包stylelint-config-prettier stylelint-prettier
: prettier 与 stylelint 整合包
进行配置
1 | // .prettierrc.js |
还需要修改 eslint 与 stylelint 的一些配置
1 | // .eslintrc.js |
1 | // stylelint.config.js |
添加脚本
1 | // package.json |
运行脚本
1 | npm run format |
相关链接
WebStorm 配置使用 Prettier 快速格式化:
建议修改为全局使用 Prettier 格式化,避免记忆两个格式化快捷键
husky 与 lint-staged
强制使用 linter 检查代码,不通过检查则无法提交代码,以使 linter 真正得到有效执行。
安装依赖
1 | npm i -D husky lint-staged |
依赖解释
husky
: 在项目中添加 git 钩子,在 git 各个生命周期(姑且这样称呼吧)中执行一些自定义操作。我们这里主要是用在 git 提交之前执行 linter 操作,不通过则提交无效。lint-staged
: 简而言之,就是只针对 git 提交的文件进行一些操作,而非整个项目的所有文件。我们这里主要是用在 git 提交之前进行 linter 时只针对提交的文件,以进行渐进式的重构。
进行配置
1 | // .huskyrc.js |
1 | // lint-staged.config.js |
有人说 lint-staged 并行运行多个命令可能会有问题,因为 nodejs 本身在写入文件时不会加锁,导致多线程下可能存在问题(吾辈目前还没遇到过.JPG)
之后,在我们使用 git commit
时就会触发 lint 操作了!
相关链接
总结
基本上,这些工具初次配置起来还是非常麻烦的,但这是一件一劳永逸的事情,所以还是值得花时间去做的。
注:
目前还存在的问题是:
ESLint 检测出来的部分错误能使用 A-Enter 修复
Prettier 与 WebStorm 自身格式化不能共存(自动切换)
Prettier 在 WebStorm 中无法直接配置导致上面问题存在的必要性
StyleLint 不能使用 A-Enter 修复且不能与 WebStorm 共存
可能的解决方案是找一下是否有一种方式能够让 WebStorm 一个快捷键执行多条命令,或者,写一个可用的插件。
参考