详解如何在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中的事件代理初探
Mar 08 Javascript
JS高级调试技巧:捕获和分析 JavaScript Error详解
Mar 16 Javascript
jQuery实现转动随机数抽奖效果的方法
May 21 Javascript
JavaScript 字符串数字左补位,右补位,取固定长度,截位扩展函数代码
Mar 25 Javascript
Vue Transition实现类原生组件跳转过渡动画的示例
Aug 19 Javascript
微信禁止下拉查看URL的处理方法
Sep 28 Javascript
vue.js中proxyTable 转发请求的实现方法
Sep 20 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
May 01 Javascript
新手快速入门微信小程序组件库 iView Weapp
Jun 24 Javascript
vue设置动态请求地址的例子
Nov 01 Javascript
vue 实现 rem 布局或vw 布局的方法
Nov 13 Javascript
JavaScript字符串处理常见操作方法小结
Nov 15 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
兼容性最强的PHP生成缩略图的函数代码(修改版)
2011/01/18 PHP
php输入流php://input使用浅析
2014/09/02 PHP
PHP常用处理静态操作类
2015/04/03 PHP
使用JavaScript创建新样式表和新样式规则
2016/06/14 PHP
详解php命令注入攻击
2019/04/06 PHP
Laravel Validator自定义错误返回提示消息并在前端展示
2019/05/09 PHP
[原创]站长必须要知道的javascript广告代码
2007/05/30 Javascript
解析js中获得父窗口链接getParent方法以及各种打开窗口的方法
2013/06/19 Javascript
js hover 定时器(实例代码)
2013/11/12 Javascript
js如何判断用户是否是用微信浏览器
2014/06/05 Javascript
使用nodejs下载风景壁纸
2017/02/05 NodeJs
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
2017/02/23 Javascript
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
2017/08/01 jQuery
JavaScript中运算符规则和隐式类型转换示例详解
2017/09/06 Javascript
使用 Javascript 实现浏览器推送提醒功能的示例
2017/11/03 Javascript
Vue封装一个简单轻量的上传文件组件的示例
2018/03/21 Javascript
js中时间格式化的几种方法
2018/07/22 Javascript
使用Mock.js生成前端测试数据
2020/12/13 Javascript
react-native 实现购物车滑动删除效果的示例代码
2021/01/15 Javascript
python: line=f.readlines()消除line中\n的方法
2018/03/19 Python
Python编写带选项的命令行程序方法
2019/08/13 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
2019/08/23 Python
python并发爬虫实用工具tomorrow实用解析
2019/09/25 Python
Python unittest框架操作实例解析
2020/04/13 Python
StubHub希腊:购买体育赛事、音乐会和剧院门票
2019/08/03 全球购物
傲盾软件面试题
2015/08/17 面试题
单位在职证明范本
2014/01/09 职场文书
可贵的沉默教学反思
2014/02/06 职场文书
大学生职业生涯规划书
2014/03/14 职场文书
老龄工作先进事迹
2014/08/15 职场文书
实习生工作证明范本
2014/09/14 职场文书
个人对照检查材料思想汇报(四风问题)
2014/09/25 职场文书
2015年中学体育教师工作总结
2015/10/23 职场文书
python函数指定默认值的实例讲解
2021/03/29 Python
ORACLE数据库对long类型字段进行模糊匹配的解决思路
2021/04/07 Oracle
Window server 2012 R2 AD域的组策略相关设置
2022/04/28 Servers