详解如何在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 相关文章推荐
彻底搞懂JS无缝滚动代码
Jan 03 Javascript
用js实现的抽象CSS圆角效果!!
May 03 Javascript
js 巧妙去除数组中的重复项
Jan 25 Javascript
js的hasownproperty使用示例
Mar 02 Javascript
js+css实现超简洁的二级下拉菜单效果代码
Sep 07 Javascript
javascript中FOREACH数组方法使用示例
Mar 01 Javascript
js实现小窗口拖拽效果
Dec 03 Javascript
微信小程序开发之大转盘 仿天猫超市抽奖实例
Dec 08 Javascript
jQuery插件FusionCharts绘制2D柱状图和折线图的组合图效果示例【附demo源码】
Apr 10 jQuery
解决vue-router进行build无法正常显示路由页面的问题
Mar 06 Javascript
在vue+element ui框架里实现lodash的debounce防抖
Nov 13 Javascript
JavaScript实现随机点名程序
Mar 25 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
新浪新闻小偷
2006/10/09 PHP
php 定义404页面的实现代码
2012/11/19 PHP
php实现的发送带附件邮件类实例
2014/09/22 PHP
PHP随机生成信用卡卡号的方法
2015/03/23 PHP
你真的了解JavaScript吗?
2007/02/24 Javascript
jQuery lazyload 的重复加载错误以及修复方法
2010/11/19 Javascript
你的 mixin 真的兼容 ECMAScript 5 吗?
2013/04/11 Javascript
JS获取图片实际宽高及根据图片大小进行自适应
2013/08/11 Javascript
基于jquery实现一张图片点击鼠标放大再点缩小
2013/09/29 Javascript
JavaScript 开发工具webstrom使用指南
2014/12/09 Javascript
Javascript基础教程之比较操作符
2015/01/18 Javascript
pace.js页面加载进度条插件
2015/09/29 Javascript
javascript时间差插件分享
2016/07/18 Javascript
15款最好的Bootstrap在线编辑器
2016/08/03 Javascript
javascript cookie的基本操作(添加和删除)
2017/07/24 Javascript
js实现左右两侧浮动广告
2018/07/09 Javascript
使用异步组件优化Vue应用程序的性能
2019/04/28 Javascript
JavaScript数组排序功能简单实现
2020/05/14 Javascript
Openlayers绘制地图标注
2020/09/28 Javascript
[03:11]TI9战队档案 - Alliance
2019/08/20 DOTA
分析Python读取文件时的路径问题
2018/02/11 Python
基于Python实现定时自动给微信好友发送天气预报
2018/10/25 Python
python通过ffmgep从视频中抽帧的方法
2018/12/05 Python
Python如何处理大数据?3个技巧效率提升攻略(推荐)
2019/04/15 Python
Python如何操作docker redis过程解析
2020/08/10 Python
html5-websocket基于远程方法调用的数据交互实现
2012/12/04 HTML / CSS
英国口碑最好的的维他命胶囊品牌:Myvitamins(有中文站)
2016/12/03 全球购物
英国屋顶用品和材料超市:Roofing Supplies UK
2019/08/24 全球购物
美国优质马术服装购买网站:Breeches.com
2019/12/16 全球购物
农民工创业典型事迹
2014/01/25 职场文书
大学生社团活动总结
2014/04/26 职场文书
2014年预备党员端正入党动机思想汇报
2014/09/13 职场文书
车辆年审委托书范本
2014/09/18 职场文书
授权委托书样本
2014/09/25 职场文书
拿破仑传读书笔记
2015/07/01 职场文书
oracle数据库去除重复数据
2022/05/20 Oracle