详解如何在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修改CSS属性的代码
May 06 Javascript
JavaScript设置首页和收藏页面的小例子
Nov 11 Javascript
javascript事件冒泡详解和捕获、阻止方法
Apr 12 Javascript
window.print打印指定div指定网页指定区域的方法
Aug 04 Javascript
深入剖析JavaScript:Object类型
May 10 Javascript
在node中如何使用 ES6
Apr 22 Javascript
EasyUI Datebox 日期验证之开始日期小于结束时间
May 19 Javascript
基于pako.js实现gzip的压缩和解压功能示例
Jun 13 Javascript
详解在vue-cli项目中安装node-sass
Jun 21 Javascript
Vue2.0用 watch 观察 prop 变化(不触发)
Sep 08 Javascript
koa2 数据api中间件设计模型的实现方法
Jul 13 Javascript
详解TypeScript的基础类型
Feb 18 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
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
2013/06/14 PHP
php jq jquery getJSON跨域提交数据完整版
2013/09/13 PHP
php 判断服务器操作系统的类型
2014/02/17 PHP
php常用的安全过滤函数集锦
2014/10/09 PHP
PHP中使用socket方式GET、POST数据实例
2015/04/02 PHP
使用PHP+AJAX让WordPress动态加载文章的教程
2015/12/11 PHP
Javascript验证上传图片大小[前台处理]
2014/07/18 Javascript
上传图片js判断图片尺寸和格式兼容IE
2014/09/01 Javascript
vue2.0父子组件间通信的实现方法
2017/04/19 Javascript
javascript基础进阶_深入剖析执行环境及作用域链
2017/09/05 Javascript
JavaScript中立即执行函数实例详解
2017/11/04 Javascript
提升node.js中使用redis的性能遇到的问题及解决方法
2018/10/30 Javascript
转换layUI的数据表格中的日期格式方法
2019/09/19 Javascript
Python中selenium实现文件上传所有方法整理总结
2017/04/01 Python
Python装饰器简单用法实例小结
2018/12/03 Python
基于YUV 数据格式详解及python实现方式
2019/12/09 Python
使用 Python ssh 远程登陆服务器的最佳方案
2020/03/06 Python
python json.dumps中文乱码问题解决
2020/04/01 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
2020/10/12 Python
Python hashlib和hmac模块使用方法解析
2020/12/08 Python
用python查找统一局域网下ip对应的mac地址
2021/01/13 Python
python如何用matplotlib创建三维图表
2021/01/26 Python
Python3压缩和解压缩实现代码
2021/03/01 Python
浅谈基于HTML5的在线视频播放方案
2016/02/18 HTML / CSS
美国最大的在线寄售和旧货店:Swap.com
2018/08/27 全球购物
Amara德国:家居饰品、设计师品牌和豪华礼品
2019/05/20 全球购物
教师党员思想汇报
2014/01/06 职场文书
《小松树和大松树》教学反思
2014/02/20 职场文书
大学生社会实践评语
2014/04/25 职场文书
单位承诺书格式
2014/05/21 职场文书
工人先锋号申报材料
2014/12/29 职场文书
2015年扶贫帮困工作总结
2015/05/20 职场文书
致接力运动员加油稿
2015/07/21 职场文书
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
2021/06/07 Python
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
2021/06/30 SQL Server
Mysql分库分表之后主键处理的几种方法
2022/02/15 MySQL