详解如何在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中Array 对象相关的几个方法
Dec 22 Javascript
javascript获取当前ip的代码
May 10 Javascript
javascript跑马灯悬停放大效果实现代码
Dec 12 Javascript
js父窗口关闭时子窗口随之关闭完美解决方案
Apr 29 Javascript
animate 实现滑动切换效果【实例代码】
May 05 Javascript
jQuery中使用animate自定义动画的方法
May 29 Javascript
JS实现搜索框文字可删除功能
Dec 28 Javascript
JavaScript实现图片本地预览功能【不用上传至服务器】
Sep 20 Javascript
vue select选择框数据变化监听方法
Aug 24 Javascript
Vue CLI 3搭建vue+vuex最全分析(推荐)
Sep 27 Javascript
ES6 Promise对象的含义和基本用法分析
Jun 14 Javascript
vue3中provide && inject的使用
Jul 01 Vue.js
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
第二节--PHP5 的对象模型
2006/11/16 PHP
探讨Hessian在PHP中的使用分析
2013/06/13 PHP
利用php的ob缓存机制实现页面静态化方法
2017/07/09 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
tp5.1 框架查询表达式用法详解
2020/05/25 PHP
JavaScript Cookie显示用户上次访问的时间和次数
2009/12/08 Javascript
JavaScript 笔记二 Array和Date对象方法
2010/05/22 Javascript
JavaScript学习点滴 call、apply的区别
2010/10/22 Javascript
解读JavaScript中 For, While与递归的用法
2013/05/07 Javascript
javascript跨浏览器的属性判断方法
2014/03/16 Javascript
网页运行时提示对象不支持abigimage属性或方法
2014/08/10 Javascript
使用jquery实现仿百度自动补全特效
2015/07/23 Javascript
一起学写js Calender日历控件
2016/04/14 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
2016/07/14 Javascript
angular.js分页代码的实例
2016/07/27 Javascript
JS实现放大、缩小及拖拽图片的方法【可兼容IE、火狐】
2016/08/23 Javascript
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
JS实现倒计时图文效果
2018/11/17 Javascript
详解Js里的for…in和for…of的用法
2019/03/28 Javascript
vue 手机物理监听键+退出提示代码
2020/09/09 Javascript
Python程序退出方式小结
2017/12/09 Python
Jupyter notebook远程访问服务器的方法
2018/05/24 Python
Python列表推导式与生成器用法分析
2018/08/02 Python
执行Django数据迁移时报 1091错误及解决方法
2019/10/14 Python
Python守护进程实现过程详解
2020/02/10 Python
Django后端分离 使用element-ui文件上传方式
2020/07/12 Python
属性与 @property 方法让你的python更高效
2020/09/21 Python
浅谈CSS3特性查询(Feature Query: @supports)功能简介
2017/07/31 HTML / CSS
巴西化妆品商店:Lojas Rede
2019/07/26 全球购物
电子狗项圈:eDog Australia
2019/12/04 全球购物
企业项目策划书
2014/01/11 职场文书
学生未请假就回家检讨书
2014/09/22 职场文书
2014年班组工作总结
2014/11/20 职场文书
公司借条范本
2015/05/25 职场文书
雄兵连:第三季先行图公开,天使恶魔联合,银河之力的新力量
2021/06/11 国漫
高性能跳频抗干扰宽带自组网电台
2022/02/18 无线电