详解如何在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 AOP 实现ajax回调函数使用比较方便
Nov 20 Javascript
Jquery阻止事件冒泡 event.stopPropagation
Dec 11 Javascript
完美解决IE低版本不支持call与apply的问题
Dec 05 Javascript
JavaScript window.location对象
Nov 14 Javascript
浅析JavaScript中的事件机制
Jun 04 Javascript
简介JavaScript中的unshift()方法的使用
Jun 09 Javascript
js+css实现的圆角边框TAB选项卡滑动门代码分享(2款)
Aug 26 Javascript
AngularJS 使用 UI Router 实现表单向导
Jan 29 Javascript
浅析javascript中的Event事件
Dec 09 Javascript
vue视频播放暂停代码
Nov 08 Javascript
JQuery表单元素取值赋值方法总结
May 12 jQuery
React实现阿里云OSS上传文件的示例
Aug 10 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递归算法和应用方法介绍
2013/04/15 PHP
php提交过来的数据生成为txt文件
2016/04/28 PHP
php魔术方法功能与用法实例分析
2016/10/19 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
2018/04/20 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
基于jQuery实现的水平和垂直居中的div窗口
2011/08/08 Javascript
js中的preventDefault与stopPropagation详解
2014/01/29 Javascript
ES6所改良的javascript“缺陷”问题
2016/08/23 Javascript
js实现日历的简单算法
2017/01/24 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
2017/02/12 Javascript
Angular如何在应用初始化时运行代码详解
2018/06/11 Javascript
浅谈React Event实现原理
2018/09/20 Javascript
vue 实现搜索的结果页面支持全选与取消全选功能
2019/05/10 Javascript
JS实现多选框的操作
2020/06/24 Javascript
用python读写excel的方法
2014/11/18 Python
zookeeper python接口实例详解
2018/01/18 Python
简单实现python画圆功能
2018/01/25 Python
python用户评论标签匹配的解决方法
2018/05/31 Python
Python使用Pandas库实现MySQL数据库的读写
2019/07/06 Python
django 使用全局搜索功能的实例详解
2019/07/18 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
2019/11/29 Python
Python生成个性签名图片获取GUI过程解析
2019/12/16 Python
关于TensorFlow新旧版本函数接口变化详解
2020/02/10 Python
python实现在内存中读写str和二进制数据代码
2020/04/24 Python
基于python实现ROC曲线绘制广场解析
2020/06/28 Python
利用html5 canvas动态画饼状图的示例代码
2018/04/02 HTML / CSS
英国家庭家具、照明和花园家具购物网站:Furniture123
2018/12/31 全球购物
网吧消防安全责任书
2014/07/29 职场文书
学校开学标语
2014/10/06 职场文书
个人公司授权委托书范本
2014/10/12 职场文书
消防宣传标语大全
2015/08/03 职场文书
解决thinkphp6(tp6)在状态码500下不报错,或者显示错误“Malformed UTF-8 characters”的问题
2021/04/01 PHP
看看如何用Python绘制小米新版天价logo
2021/04/20 Python
MySQL系列之九 mysql查询缓存及索引
2021/07/02 MySQL
如何创建一个创建MySQL数据库中的datetime类型
2022/03/21 MySQL