详解如何在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 相关文章推荐
从零开始学习jQuery (十) jQueryUI常用功能实战
Feb 23 Javascript
Jquery提交表单 Form.js官方插件介绍
Mar 01 Javascript
javascript 日期时间 转换的方法
Feb 21 Javascript
jQuery通过ajax快速批量提交表单数据
Oct 25 Javascript
Bootstrap实现导航栏的2种方式
Nov 28 Javascript
Vue.2.0.5过渡效果使用技巧
Mar 16 Javascript
js中变量的连续赋值(实例讲解)
Jul 08 Javascript
vue.js或js实现中文A-Z排序的方法
Mar 08 Javascript
微信小程序6位或多位验证码密码输入框功能的实现代码
May 29 Javascript
vue-router 源码实现前端路由的两种方式
Jul 02 Javascript
vue.js与后台数据交互的实例讲解
Aug 08 Javascript
node.js使用net模块创建服务器和客户端示例【基于TCP协议】
Feb 14 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读取MySQL数据代码
2008/06/05 PHP
php pthreads多线程的安装与使用
2016/01/19 PHP
laravel 操作数据库常用函数的返回值方法
2019/10/11 PHP
客户端脚本中常常出现的一些问题和调试技巧
2007/01/09 Javascript
jQuery DIV弹出效果实现代码
2009/07/03 Javascript
js setattribute批量设置css样式
2009/11/26 Javascript
div模拟滚动条效果示例代码
2013/10/16 Javascript
JS 屏蔽键盘不可用与鼠标右键不可用的方法
2013/11/18 Javascript
js实现右下角提示框的方法
2015/02/03 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
2015/06/01 Javascript
js判断文本框输入的内容是否为数字
2015/12/23 Javascript
简述Matlab中size()函数的用法
2016/03/20 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
2016/05/26 Javascript
微信小程序图表插件(wx-charts)实例代码
2017/01/17 Javascript
nodejs开发——express路由与中间件
2017/03/24 NodeJs
vue一步步实现alert功能
2017/07/05 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
2017/12/06 Javascript
使用layer弹窗和layui表单实现新增功能
2018/08/09 Javascript
一文了解Vue中的nextTick
2019/05/06 Javascript
解决Layui数据表格的宽高问题
2019/09/28 Javascript
解决vuex改变了state的值,但是页面没有更新的问题
2020/11/12 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
Python实现获取磁盘剩余空间的2种方法
2017/06/07 Python
Python利用multiprocessing实现最简单的分布式作业调度系统实例
2017/11/14 Python
python爬取拉勾网职位数据的方法
2018/01/24 Python
Django添加favicon.ico图标的示例代码
2018/08/07 Python
Python 给屏幕打印信息加上颜色的实现方法
2019/04/24 Python
python 用opencv实现霍夫线变换
2020/11/27 Python
Python爬虫实现selenium处理iframe作用域问题
2021/01/27 Python
法律七进实施方案
2014/03/15 职场文书
艺术教育实施方案
2014/05/03 职场文书
现场活动策划方案
2014/08/22 职场文书
运动会广播稿200米(5篇)
2014/10/15 职场文书
幼儿园教研工作总结2015
2015/05/12 职场文书
MySQL 时间类型的选择
2021/06/05 MySQL
HTML+CSS实现导航条下拉菜单的示例代码
2021/08/02 HTML / CSS