详解如何在vue项目中使用eslint+prettier格式化代码


Posted in Javascript onNovember 10, 2018

 对于前端代码风格这个问题一直是经久不衰,每个人都有自己的代码风格,每次看到别人代码一团糟时候我们都会吐槽下。今天给大家介绍如何使用eslint+prettier统一代码风格。

对于eslint大家应该比较了解了,是用来校验代码规范的。给大家介绍下prettier,prettier是用来统一代码风格,格式化代码的,支持js、ts、css、less、scss、json、jsx。并且集成了vscode、vim、webstorm、sublime text插件。

如果你的项目中采用的是ellint默认规则并且没有添加别的规则、没有使用standard或airbnb得风格,你可以下载编辑器插件直接保存代码时自动格式化。

以vscode为例:搜索插件  Eslint、vuter、prettier-code安装,在编辑器首选项   配置中修改配置

//由于prettier不能格式化vue文件template 所以使用js-beautify-html格式化
  "vetur.format.defaultFormatter.html": "js-beautify-html", 
  "vetur.format.defaultFormatterOptions": {
    "js-beautify-html": {
      "wrap_attributes": "force-aligned" //属性强制折行对齐
    }
  },
  "eslint.autoFixOnSave": true, //保存时使用自动格式化
  "eslint.validate": [  //验证文件类型
    "javascript",
    "javascriptreact",
    "vue",
    "html",
    "jsx",
    {
      "language": "html",
      "autoFix": true
    },
    {
      "language": "vue",
      "autoFix": true
    }
  ],
  "prettier.singleQuote": true, //使用单引号而不是双引号
  "prettier.jsxBracketSameLine": true, //将>多行JSX元素放在最后一行的末尾,而不是单独放在下一行
  "editor.formatOnSave": true, //保存时自动格式化

然后在eslint配置文件.eslintrc extends添加 eslint:recommended

extends: [
    'plugin:vue/essential',
    'eslint:recommended'
  ],

在page.json文件 scripts 中lint里面添加--fix   当执行npm run lint时eslint会帮你修复一些可以自动修复得规则

"scripts": {
    "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
    "start": "npm run dev",
    "lint": "eslint --fix --ext .js,.vue src",
    "build": "node build/build.js"
  },

现在我们就写完代码保存时prettier就会帮我们格式化代码,执行npm run lint时eslint会修复一些可以修复的规则,其余得规则就需要我们手动修复了

如果你的项目中使用的是standard或airbnd的代码规范、或项目中自己添加了一些eslint样式规则,那么我们需要安装一些依赖在项目中帮助格式化代码

npm i --save-dev prettier eslint-plugin-prettier eslint-config-prettier prettier-eslint-cli

安装eslint-plugin-prettier  配合eslint使用prettier,安装eslint-config-prettier禁用一些eslint和prettier冲突的规则,安装prettier-eslint-cli 使我们可以敲命令格式化代码

在.eslintrc.js  plugin和extends中添加prettier支持  rules中添加规则

extends: [
    'plugin:vue/essential',
    'eslint:recommended',
    'plugin:prettier/recommended'
  ],
  // required to lint *.vue files
  plugins: ['vue', 'prettier'],
  // add your custom rules here
  rules: {
    'prettier/prettier': 'error',
    // allow debugger during development
    'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off'
  }

在page.json  script中添加配置   执行npm run format就可以格式化代码了

"scripts": {
    "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
    "start": "npm run dev",
    "lint": "eslint --fix --ext .js,.vue src",
    "build": "node build/build.js",
    "format": "prettier-eslint --write \"src/**/*.js\" \"src/**/*.vue\""
  },

当我们执行npm run format时还会报各种奇怪的错误 如:error: Delete ⏎ (prettier/prettier) at src/pages/xxx 等;这是因为prettier配置和编辑器prettier配置冲突导致的   在rules中配置下覆盖掉就可以了

"rules": {
 "no-console": 0,
 "prettier/prettier": [
  "error",
  {
   "singleQuote": true,
   "trailingComma": "none",
   "bracketSpacing": true,
   "jsxBracketSameLine": true
  }
 ]
}

现在我们就可以愉快的编码了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 字符串与数组转换函数[不用split与join]
Dec 13 Javascript
3Z版基于jquery的图片复选框(asp.net+jquery)
Apr 12 Javascript
JS实现根据当前文字选择返回被选中的文字
May 21 Javascript
node.js中的querystring.stringify方法使用说明
Dec 10 Javascript
javascript跨域总结之window.name实现的跨域数据传输
Nov 01 Javascript
javaScript如何跳出多重循环break、continue
Sep 01 Javascript
Vue.js使用v-show和v-if的注意事项
Dec 13 Javascript
AjaxUpLoad.js实现文件上传
Mar 05 Javascript
Vue中使用vue-i18插件实现多语言切换功能
Apr 25 Javascript
iview同时验证多个表单问题总结
Sep 29 Javascript
手淘flexible.js框架使用和源代码讲解小结
Oct 15 Javascript
Vue2.0 实现页面缓存和不缓存的方式
Nov 12 Javascript
AngularJS上传文件的示例代码
Nov 10 #Javascript
详解vue-cli 3.0 build包太大导致首屏过长的解决方案
Nov 10 #Javascript
优雅的在React项目中使用Redux的方法
Nov 10 #Javascript
Vue组件之单向数据流的解决方法
Nov 10 #Javascript
详解如何制作并发布一个vue的组件的npm包
Nov 10 #Javascript
如何在基于vue-cli的项目自定义打包环境
Nov 10 #Javascript
Vue项目报错:Uncaught SyntaxError: Unexpected token
Nov 10 #Javascript
You might like
thinkphp模板赋值与替换实例简述
2014/11/24 PHP
PHP数据分析引擎计算余弦相似度算法示例
2017/08/08 PHP
js 刷新页面的代码小结 推荐
2010/04/02 Javascript
defer属性导致引用JQuery的页面报“浏览器无法打开网站xxx,操作被中止”错误的解决方法
2010/04/27 Javascript
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
2010/05/31 Javascript
50款非常棒的 jQuery 插件分享
2012/03/29 Javascript
js操作iframe父子窗体示例
2014/05/22 Javascript
jquery文档操作wrap()方法实例简述
2015/01/10 Javascript
js模仿java的Map集合详解
2016/01/06 Javascript
JS中解决谷歌浏览器记住密码输入框颜色改变功能
2017/02/13 Javascript
微信小程序实战之自定义抽屉菜单(7)
2017/04/18 Javascript
js实现网页的两个input标签内的数值加减(示例代码)
2017/08/15 Javascript
关于Google发布的JavaScript代码规范你要知道哪些
2018/04/04 Javascript
webpack公共组件引用路径简化小技巧
2018/06/15 Javascript
VUE 配置vue-devtools调试工具及安装方法
2018/09/30 Javascript
ES6基础之 Promise 对象用法实例详解
2019/08/22 Javascript
Python的shutil模块中文件的复制操作函数详解
2016/07/05 Python
Python实现Smtplib发送带有各种附件的邮件实例
2017/06/05 Python
Python读取视频的两种方法(imageio和cv2)
2018/04/15 Python
django 修改server端口号的方法
2018/05/14 Python
Python 获取中文字拼音首个字母的方法
2018/11/28 Python
python中yield的用法详解——最简单,最清晰的解释
2019/04/04 Python
Django admin禁用编辑链接和添加删除操作详解
2019/11/15 Python
Python 解析库json及jsonpath pickle的实现
2020/08/17 Python
CSS3制作hover下划线动画
2017/03/27 HTML / CSS
Nike加拿大官网:Nike.com (CA)
2019/04/09 全球购物
应届生如何写自荐信
2014/01/05 职场文书
扶贫办主任查摆“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
2015年清剿火患专项行动工作总结
2015/07/27 职场文书
职工宿舍管理制度
2015/08/05 职场文书
导游词之江苏溱潼古镇
2019/11/27 职场文书
python爬虫之爬取笔趣阁小说
2021/04/22 Python
Ajax 的初步实现(使用vscode+node.js+express框架)
2021/06/18 Javascript
springboot中rabbitmq实现消息可靠性机制详解
2021/09/25 Java/Android
利用js实现简单开关灯代码
2021/11/23 Javascript
MySQL事务的ACID特性以及并发问题方案
2022/07/15 MySQL