之前公司的vue项目只是我一我的在写,代码风格统一,可是后来随着团队增长,统一的代码风格就愈来愈重要。个人主力工具是sublime,ws辅助,vscode基本不多使用(就下载安装放在冷宫),可是据说用来写vue项目还不错,就开启了一番折腾。固然工具么,没有谁好谁坏了~~ 不盲目站队,适合本身的就是最好的。javascript
目标是:Eslint
校验代码语法,prettier
统一格式化代码,按下保存自动修复eslint错误,自动格式化代码(由于懒~)html
首先,须要安装 Vetur
、ESLint
、Prettier - Code formatter
这三个插件,安装完重启下,防止插件不生效。vue
另外这里有个坑, Beautify
插件会占用格式化代码的快捷键,所以会和prettier
产生冲突,因此直接禁用掉。java
打开vscode工具的设置(快捷键 Ctrl
+ ,
)里面有两个设置。node
一个是 USER SETTINGS(用户设置)也就是全局配置,其余项目也会应用这个配置。react
另外一个是WORKSPACE SETTINGS(工做区设置)也就是项目配置,会在当前项目的根路径里建立一个.vscode/settings.json
文件,而后配置只在当前项目生效。json
我把配置写在了工做区设置,配置以下:babel
{ //.vue文件template格式化支持,并使用js-beautify-html插件 "vetur.format.defaultFormatter.html": "js-beautify-html", //js-beautify-html格式化配置,属性强制换行 "vetur.format.defaultFormatterOptions": { "js-beautify-html": { "wrap_attributes": "force-aligned" } }, //根据文件后缀名定义vue文件类型 "files.associations": { "*.vue": "vue" }, //配置 ESLint 检查的文件类型 "eslint.validate": [ "javascript", "javascriptreact", { "language": "vue", "autoFix": true } ], //保存时eslint自动修复错误 "eslint.autoFixOnSave": true, //保存自动格式化 "editor.formatOnSave": true }
因为须要同时使用prettier
和eslin
t,而prettier
的一些规则和eslint
的一些规则可能存在冲突,例如prettier
字符串默认是用双引号而esLint
定义的是单引号的话这样格式化以后就不符合ESLint
规则了。工具
因此要解决冲突就须要在Prettier
的规则配置里也配置上和ESLint
同样的规则,直接覆盖掉,ESLint
和Prettier
的配置文件内容以下:spa
.eslintrc.js
配置使用单引号、结尾不能有分号。
module.exports = { root: true, env: { node: true }, extends: ['plugin:vue/essential', 'eslint:recommended'], rules: { 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', //强制使用单引号 quotes: ['error', 'single'], //强制不使用分号结尾 semi: ['error', 'never'] }, parserOptions: { parser: 'babel-eslint' } }
.prettierrc
配置使用单引号、结尾不能有分号。
{ //开启 eslint 支持 "eslintIntegration": true, //使用单引号 "singleQuote": true, //结尾不加分号 "semi": false }
也能够直接在vscode工做区配置prettier
{ //开启 eslint 支持 "prettier.eslintIntegration": true, //使用单引号 "prettier.singleQuote": true, //结尾不加分号 "prettier.semi": false, }
这下不再用看到别人代码一团糟吐槽了。第一次折腾vscode,参考了不少网上大佬的文章,可是感受这个配置好像还差了哪里,但又始终不知道问题在哪里,热烈欢迎你们交流指教。