详解如何在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 毫秒转时间示例代码
Sep 22 Javascript
Js判断CSS文件加载完毕的具体实现
Jan 17 Javascript
JavaScript子窗口调用父窗口变量和函数的方法
Oct 09 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
Nov 18 Javascript
详解JavaScript事件循环机制
Sep 07 Javascript
jQuery实现点击图标div循环放大缩小功能
Sep 30 jQuery
详解JS取出两个数组中的不同或相同元素
Mar 20 Javascript
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
May 14 Javascript
详细教你微信公众号正文页SVG交互开发技巧
Jul 25 Javascript
详解微信小程序开发之formId使用(模板消息)
Aug 27 Javascript
基于canvasJS在PHP中制作动态图表
May 30 Javascript
ES6 解构赋值的原理及运用
May 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
PHP操作数组的一些函数整理介绍
2011/07/17 PHP
PHP中危险的file_put_contents函数详解
2017/11/04 PHP
thinkPHP5框架自定义验证器实现方法分析
2018/06/11 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
围观tangram js库
2010/12/28 Javascript
js之事件冒泡和事件捕获详细介绍
2013/10/28 Javascript
js脚本获取webform服务器控件的方法
2014/05/16 Javascript
四种参数传递的形式——URL,超链接,js,form表单
2015/07/24 Javascript
浅谈javascript中onbeforeunload与onunload事件
2015/12/10 Javascript
NodeJS实现阿里大鱼短信通知发送
2016/01/17 NodeJs
JS定时器用法分析【时钟与菜单中的应用】
2016/12/21 Javascript
BootstrapTable请求数据时设置超时(timeout)的方法
2017/01/22 Javascript
Angular js 实现添加用户、修改密码、敏感字、下拉菜单的综合操作方法
2017/10/24 Javascript
vue2.0 循环遍历加载不同图片的方法
2018/03/06 Javascript
js纯前端实现腾讯cos文件上传功能的示例代码
2019/05/14 Javascript
weui上传多图片,压缩,base64编码的示例代码
2020/06/22 Javascript
Vue组件跨层级获取组件操作
2020/07/27 Javascript
[02:03]风行者至宝清风环佩外观展示
2020/09/05 DOTA
Python中的__SLOTS__属性使用示例
2015/02/18 Python
Python实现识别图片内容的方法分析
2018/07/11 Python
Django框架首页和登录页分离操作示例
2019/05/28 Python
python求最大值最小值方法总结
2019/06/25 Python
基于Python安装pyecharts所遇的问题及解决方法
2019/08/12 Python
对python中各个response的使用说明
2020/03/28 Python
Django中使用Json返回数据的实现方法
2020/06/03 Python
英国No.1体育用品零售商:SportsDirect.com
2019/10/16 全球购物
英国哈罗德园艺:Harrod Horticultural
2020/03/31 全球购物
SQL注入攻击的种类有哪些
2013/12/30 面试题
学习之星事迹材料
2014/05/17 职场文书
党员服务承诺书
2014/05/28 职场文书
旷课检讨书500字
2014/10/14 职场文书
查摆问题整改措施
2014/10/24 职场文书
小型婚礼主持词
2015/06/30 职场文书
Pytorch中TensorBoard及torchsummary的使用详解
2021/05/12 Python
海贼王十大逆天果实 魂魂果实上榜,岩浆果实攻击力最强
2022/03/18 日漫
在MySQL中你成功的避开了所有索引
2022/04/20 MySQL