vscode + vetur + eslint + prettier 实现团队代码风格统一
如果你也是 front-end coder,也采用 ES6、vue 单文件、css 预编译,希望实现团队代码格式/风格统一,可参考本文。
值得参考并执行的规范
- 谷歌 HTML/CSS 规范
- Airbnb CSS / Sass 指南
- Airbnb JavaScript 风格指南
- Eslint rules(强烈推荐)
- 使用 ES6 进行开发的思考(via Baidu EFE)
- Vue.js 风格指南
落地方案
- IDE: vs code
- ESLint // ide lint 报错/warning 要靠它
- Prettier - Code formatter // 格式化 html/css/less/scss etc…
- Vetur // 这里只用来语法提示,代码格式化交给 eslint(npm)
- npm:
- eslint
- eslint-config-airbnb-base
- eslint-config-prettier
- eslint-plugin-import
- eslint-plugin-vue
- eslint-plugin-prettier
- prettier
- 关键配置文件(in git repo)
- .vscode/setting.json // ESLint(ide 插件),vetur(ide 插件)配置在这里
- .editorconfig // 字符集配置,缩进等配置
- .eslintrc.js // eslint(npm)配置,ide eroor/warning 信息在这里配置
- .eslintignore // eslint 排除文件,如一些库文件
- .prettierrc.js // prettier 配置,如逗号分号规则
- .prettierignore //prettier 排除文件
简单说下思路
- eslint 优先级最高,装插件
eslint-config-airbnb-base
,eslint-config-prettier
,eslint-plugin-vue
,可以覆盖 prettier 的设置 - eslint 主要负责 vue/js 的格式化
- prettier 主要负责 html/css/less/scss… 的格式化
- Vetur 也有格式化功能,直接 disable 掉,我们用更高级的
- prettier 不支持 stylus,但是 Vetur 的依赖包括了
stylusSupremacy
,可以解决 - 所有的配置都可以放在项目 repo 里,且优先级会高于 coder 本地的设置,保证团队所有成员提交的代码一致
- 如果装了其他 format 插件,请在本项目中 disable 掉,我们不需要
附:配置文件
EditorConfig
1 | root = true # 表明是最顶层的配置文件,发现设为true时,才会停止查找.editorconfig文件。 |
.eslintrc.js
1 | /** |
.prettierrc
1 | module.exports = { |
.vscode/setting.json
1 | { |
后记
- 代码格式化相关的文章已经汗牛充栋,关键点不在于各种圣战,而在于团队风格统一
- vue 格式文件格式化比较特殊,template/script/style 部分由不同的插件来完成
- 通过统一 IDE/插件/配置文件实现:
- 自动格式化前端开发常见文件,实现团队代码风格统一
- 杜绝因格式问题导致的提交冲突
- 统一配置,团队共享,实现同步
- 搞清楚各种 linter/formater/IDE 插件/npm 插件的分工/优先级很重要
- ts 解决方案/git commit lint/eslint webpack loader 应该是更好也是更严格的方案,目前暂未涉及,将会是以后努力的方向
欢迎拍砖,欢迎交流
本文完