详解如何在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 验证浏览器是否支持javascript的方法小结
May 17 Javascript
Extjs中常用表单介绍与应用
Jun 07 Javascript
jquery实现最简单的滑动菜单效果代码
Sep 12 Javascript
JavaScript setTimeout使用闭包功能实现定时打印数值
Dec 18 Javascript
Jquery插件仿百度搜索关键字自动匹配功能
May 11 Javascript
AngularJs html compiler详解及示例代码
Sep 01 Javascript
JavaScript中清空数组的三种方式
Mar 22 Javascript
使用淘宝镜像cnpm安装Vue.js的图文教程
May 17 Javascript
解决layui中table异步数据请求不支持自定义返回数据格式的问题
Aug 19 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧滑动,右侧不动)
Jan 23 Javascript
Vue2.0实现组件之间数据交互和通信操作示例
May 16 Javascript
JavaScript实现alert弹框效果
Nov 19 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生成静态页的实现方法
2013/05/10 PHP
thinkphp中空模板与空模块的用法实例
2014/11/26 PHP
thinkphp模板的包含与渲染实例分析
2014/11/26 PHP
Laravel实现批量更新多条数据
2020/04/06 PHP
JavaScript的parseInt 进制问题
2009/05/07 Javascript
js实现无需数据库的县级以上联动行政区域下拉控件
2013/08/14 Javascript
jquerymobile局部渲染的各种刷新方法小结
2014/03/05 Javascript
Javascript的表单验证-初识正则表达式
2016/03/18 Javascript
Angular的事件和表单详解
2016/12/26 Javascript
js实现移动端编辑添加地址【模仿京东】
2017/04/28 Javascript
利用JavaScript实现栈的数据结构示例代码
2017/08/02 Javascript
解决Nodejs全局安装模块后找不到命令的问题
2018/05/15 NodeJs
vue forEach循环数组拿到自己想要的数据方法
2018/09/21 Javascript
NodeJS多种创建WebSocket监听的方式(三种)
2020/06/04 NodeJs
深入理解javascript中的this
2021/02/08 Javascript
[01:00:14]DOTA2官方TI8总决赛纪录片 真视界True Sight
2019/01/16 DOTA
Python的多态性实例分析
2015/07/07 Python
Python简单调用MySQL存储过程并获得返回值的方法
2015/07/20 Python
Python增量循环删除MySQL表数据的方法
2016/09/23 Python
python制作爬虫爬取京东商品评论教程
2016/12/16 Python
教你学会使用Python正则表达式
2017/09/07 Python
Python读取图片为16进制表示简单代码
2018/01/19 Python
python3下实现搜狗AI API的代码示例
2018/04/10 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
2020/03/10 Python
20行Python代码实现一款永久免费PDF编辑工具的实现
2020/08/27 Python
python statsmodel的使用
2020/12/21 Python
详解如何修改jupyter notebook的默认目录和默认浏览器
2021/01/24 Python
金山毒霸系列的笔试题
2013/04/13 面试题
产品销售员岗位职责
2013/12/18 职场文书
商场主管竞聘书
2014/03/31 职场文书
4s店市场专员岗位职责
2014/04/09 职场文书
大跃进口号
2014/06/16 职场文书
离婚协议书范本
2015/01/26 职场文书
首席执行官观后感
2015/06/03 职场文书
mysql外连接与内连接查询的不同之处
2021/06/03 MySQL
python开发的自动化运维工具ansible详解
2021/08/07 Python