Vue2项目中配置ESLint和Prettier

ESLint是js代码的质量检查工具,同时也具备一定的代码风格的格式化能力。
Prettier是一个代码风格的约束工具,Prettier能约束JS、JSX、TypeScript、Vue、CSS、Less、SCSS、HTML、JSON、Markdown等代码风格。
由于ESLint定义了一些js的代码格式化的约束,导致其与Prettier存在一些冲突。
如:
ESLint默认语句结尾不加分号,Prettier默认语句结尾加分号;
ESLint默认强制使用单引号,Prettier默认使用双引号;
ESLint默认句末减少不必要的逗号,Prettier默认尽可能多使用逗号等等

本文使用Vue cli创建项目,并做简单配置,由于项目成员大多数使用webstorm和vs code开发工具,另外提供两个工具的配置方式。

新建项目

用Vue cli新建项目,创建时选择手动配置项目,linter / formatter 配置选择ESLint + Prettier,选择在保存时候进⾏代码规则检
测,不要选commit时检测,选择将 Babel、ESLint等配置文件保存到各自的配置文件中。
在这里插入图片描述
项目创建完成后可以看到package.json文件中,存在下列开发依赖
在这里插入图片描述

  • eslint js代码的质量检查工具
  • prettier 代码风格的约束
  • @babel/eslint-parser // ESLint的Babel解析器代替babel-eslint
  • @vue/cli-plugin-eslint vue 专门的 ESLint 规则插件
  • eslint-config-prettier 用 prettier 的规则,覆盖掉 eslint:recommended 的部分规则
  • eslint-plugin-prettier 将prettier 的能力集成到 eslint 中。
  • eslint-plugin-vue 用ESLint检查.vue文件的<template>和<script>

项目根目录下存在文件ESLint的配置文件.eslintrc.js

module.exports = {
  root: true, 
  env: {
    node: true,
  },
  extends: [
    "plugin:vue/essential",
    "eslint:recommended",
    "plugin:prettier/recommended",
  ],
  parserOptions: {
    parser: "@babel/eslint-parser", // 解析器
  },
  rules: {
    "no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
    "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
  },
};

由于ESLint也具备一定的代码风格的格式化能力,vue cli 用下面的两个插件,解决ESLint和Prettier冲突问题。

  • eslint-config-prettier:禁用掉了一些不必要的以及和 Prettier 相冲突的 ESLint 规则;
  • eslint-plugin-prettier:将 prettier 作为 ESLint 的规则来使用,相当于代码不符合 Prettier 的标准时,会报一个 ESLint 错误,同时也可以通过 eslint --fix 来进行格式化;这样就相当于将 Prettier 整合进了 ESLint 中;

root 根目录标识

ESLint 检测配置文件步骤:
在要检测的文件同一目录里寻找 .eslintrc.* 和 package.json;
紧接着在父级目录里寻找,一直到文件系统的根目录;
如果在前两步发现有 root:true 的配置,停止在父级目录中寻找 .eslintrc;
如果以上步骤都没有找到,则回退到用户主目录 ~/.eslintrc 中自定义的默认配置

env 运行环境

一个环境定义了一组预定义的全局变量
获得了特定环境的全局定义,就不会认为是开发定义的,跳过对其的定义检测。否则会被认为改变量未定义
前端开发常用的运行环境:
browser - 浏览器环境中的全局变量。
node - Node.js 全局变量和作用域。
es6:es6 中除了模块之外的其他特性,同时将自动设置 parserOptions.ecmaVersion 参数为 6;以此类推 ES2017 是 7,而 ES2021 是 12;
es2017:parserOptions.ecmaVersion 为 8;
jquery - jQuery 全局变量。

globals 开发者自定义的全局变量

plugins 插件

插件用来扩展解析器的功能,插件是eslint-plugin-前缀的包,配置时无需加前缀

extends 规则继承

规则的类型:
1、eslint 开头的:是 ESLint 官方的扩展 如eslint:recommended
2、plugin 开头的:是eslint插件类型扩展,如 plugin:vue/essential,其插件前缀是eslint-plugin,省略了eslint-
3、eslint-config 开头的:来自 npm 包,配置时可以省略前缀 eslint-config-,比如上面的可以直接写成 standard
4、@开头的:扩展和 eslint-config 一样,只是在 npm 包上面加了一层作用域 scope;
5、一个执行配置文件的相对路径或绝对路径;
优先级:
如果 extends 配置的是一个数组,最终会将所有规则项进行合并,出现冲突的时候,后面的会覆盖前面的
通过 rules 单独配置的规则优先级比 extends 高

rules 自定义规则

规则的值
‘off’ 或 0:关闭对该规则的校验;
‘warn’ 或 1:启用规则,不满足时抛出警告,不会退出编译进程;
‘error’ 或 2:启用规则,不满足时抛出错误,会退出编译进程;
如果某项规则,有额外的选项,可以通过数组进行传递,数组的第一位必须是错误级别。
如 ‘semi’: [‘error’, ‘never’], never就是额外的配置项

这时候如果我在文件中加入代码

console.log("HelloWorld")

编译时将会抛出错误,退出编译进程
在这里插入图片描述
如果希望抛出警告或关闭prettier,可在rules自定义下面规则

"prettier/prettier": "warn"

配置自己的规则

ESLint就采用推荐的规则,大多数情况下我们希望按照自己的习惯自定义一些Prettier规则。
自定义格式化文件 ,文件名可以是.prettierrc(JSON格式) .prettierrc.js/prettier.config.js(js格式,需要module.exports一个对象)
为了加入注释让其他成员快速了解规则,这里使用 .prettierrc.js文件进行配置

module.exports = {
  printWidth: 120, // 一行最多 120 字符(默认80)
  tabWidth: 2, // 每个tab相当于多少个空格(默认2)
  useTabs: false, // 是否使用tab进行缩进(默认false)
  semi: false, // 行尾需要有分号(默认true)
  singleQuote: true, // 使用单引号(默认false)
  quoteProps: 'as-needed', // 对象的 key 仅在必要时用引号
  jsxSingleQuote: false, // jsx 不使用单引号,而使用双引号
  trailingComma: 'none', // 多行使用拖尾逗号(默认none)
  bracketSpacing: true, // 在对象,数组括号与文字之间加空格 "{ foo: bar }"(默认true)
  jsxBracketSameLine: false, // 多行JSX中的>放置在最后一行的结尾,而不是另起一行(默认false)
  htmlWhitespaceSensitivity: 'css', // 根据显示样式决定 html 要不要折行
  arrowParens: 'avoid', // 只有一个参数的箭头函数的参数是否带圆括号(默认avoid:添加括号)
  endOfLine: 'auto' // 行尾换行符
}

让代码编辑器识别规则

配置规则后,我们需要编辑器能够给出错误提示,按我们的规则格式化代码等提高工作效率,而不是手动调整代码,在命令行中查看错误信息,下面再编辑器中进行配置。
Webstorm和vs code 都能够安装ESLint和Prettier插件

Webstorm配置

有的版本Webstorm已经自带了Eslint、Prettier插件

Eslint

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

添加 prettier的文件监听配置
在这里插入图片描述
查看格式化快捷键:
在这里插入图片描述
如果开启保存时自动格式化,需将webstorm/vs code的自动保存功能关闭

vs code

安装插件Vetur(vue语法增强) ESLint、Prettier,Vetur 也有⼀套 Format 规则,VSCode 中ESlint 集成了 prettier 的校验规则,不需要再单独安装 Prettier 插件
在这里插入图片描述

配置 Prettier 为默认代码格式化工具

  • 同时按下 command/ctrl + shift + p 键盘
  • 输入 format document with
  • 选择 Configure Default Formatter…
  • 选择 Prettier 为默认的工具

配置文件保存时自动格式化
在这里插入图片描述

  • 8
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要安装eslintprettier插件来进行vue项目的代码规范和格式化,可以按照以下步骤进行操作: 1. 首先,在项目安装相关的插件。使用以下命令来安装eslint及其相关插件: ``` npm i eslint@7 -D npm i eslint-config-prettier eslint-plugin-prettier prettier eslint-plugin-vue babel-eslint -D ``` 需要注意的是,这里选择安装eslint7的版本是因为eslint8以上的版本废除了babel-eslint,转而使用@babel/eslint-parser替代。在使用@babel/eslint-parser时,可能会与项目本身的babel版本产生冲突,为了避免改动项目原有的babel版本,可以选择降低eslint版本。 2. 其次,需要在VSCode安装eslintprettier插件。打开VSCode,通过插件市场搜索并安装"ESLint"和"Prettier - Code formatter"插件。 3. 然后,在项目进行配置。在项目根目录下创建一个名为".eslintrc.js"的文件,并添加以下配置内容: ```javascript module.exports = { root: true, env: { node: true, }, extends: [ "plugin:vue/essential", "eslint:recommended", "@vue/prettier", ], parserOptions: { parser: "babel-eslint", ecmaVersion: 2020, }, rules: {}, }; ``` 这里使用了"plugin:vue/essential",这是一个预设的规则集,如果想要自己配置规则,可以使用"plugin:vue/essential"预设,并在rules自行添加规则。 4. 还需要在配置文件添加一些特殊的配置。在".eslintrc.js"的parserOptions添加"parser: 'vue-eslint-parser'",以解决在vue文件eslint报错的问题。 5. 最后,为了自定义prettier配置,可以在项目根目录下创建一个名为".prettierrc"的文件,然后在其添加自定义的prettier配置。例如: ```json { "tabWidth": 2, "useTabs": false, "printWidth": 300, "semi": false, "singleQuote": true, "arrowParens": "avoid", "bracketSpacing": true, "endOfLine": "auto", "eslintIntegration": false, "htmlWhitespaceSensitivity": "ignore", "ignorePath": ".gnore", "trailingComma": "none" } ``` 这里的配置可以根据个人的喜好进行调整,具体的参数意义可以参考Prettier官网的文档。 这样,你就可以在vue项目安装并配置eslintprettier了。这些工具可以帮助你保持代码规范和格式化,提高代码质量和可读性。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值