使用步骤

  • 使用 npm 安装 @vue/cli-service 版本对应的 @vue/cli-plugin-eslint

    • 例如:"@vue/cli-service": "~4.5.0" 对应的是 "@vue/cli-plugin-eslint": "^4"
    • npm install -D @vue/cli-plugin-eslint@^4
  • 通过命令 vue invoke eslint 运行插件
    • vue 命令是 @vue/cli 提供的
    • 运行插件应该可以使用任意版本的 @vue/cli 提供的 vue 命令
    • 运行插件会根据选择项更新适用依赖和修改配置文件
    • 这种修改会因为插件安装顺序不同而不同,可能潜在错误,下文提供了不同版本的配置文件,可比较后进行修改
  • eslint 插件运行时的可选项
    • Pick an ESLint config:选择内置的eslint规则

      • Error prevention only:仅仅显示错误
      • Airbnb:爱彼迎的规则
      • Standard:标准的规则
      • Prettier:Prettier的规则(建议选这个,eslint 默认只能对 js 进行检查和格式化,Prettier提供了对 html 和 css 的支持)
    • Pick additional lint features:选择特征,可多选
      • Lint on save:保存时进行检查,似乎没有作用
      • Lint and fix on commit:在提交代码时进行检查(建议勾选,强制提交的代码符合检查规则)
  • 插件后续钩子函数
    • 插件后续钩子会对所有文件根据 eslint 规则进行格式化
    • 基于代码安全考虑,建议恢复被格式化的文件
    • 在需要修改到某个文件时才对文件进行格式化,让测试人员能够对格式化后的代码提供一层保障
  • 配置 vscode 保存时格式化代码
    • 插件会生成 git 暂存时格式化代码的钩子

      • 格式化程序由 eslint 提供,只能够对部分问题进行处理,且可能存在 bug
      • 它通过 package.json 中 gitHooks、lint-staged 配置项实现
      • 使用 eslint 插件是为帮助开发人员发现问题,并统一格式,方便查看每次提交的修改地方。
      • 使用暂存时格式化将会削弱这种功能,建议关闭暂存时格式化功能,修改为保存时格式化
    • 关闭暂存时格式化,只保留暂存强制检查
      • vue-cli-service lint修改为vue-cli-service lint --no-fix --max-warnings=0
      • --no-fix:声明 eslint 不进行格式化处理
      • --max-warnings=0:vue-cli-service lint默认允许 warning 类型错误存在,为了严格限制提交的代码都被格式化,建议设置为 0
    • 使 vscode 在保存时进行格式化
      • 为 vsocde 安装插件 eslint
      • 插件只是启动器,实际是运行 node_modules 中的 eslint 依赖作为处理程序
      • 进行 vscode 的工作区配置,该配置可以随代码上传,被保存在 /.vscode/settings.json 中,内容如下
{
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
"vetur.format.enable": false,
"typescript.format.enable": false
}

疑难杂症

  • Delete ␍(eslintprettier/prettier)修复

    • vue/cli 推荐的行尾序列为 LF
    • 行尾序列有 CRLF 和 LF 两种,CRLF 是 window 系统历史遗留的换行符,LF目前更通用
    • 点 vsocde 右下角的 CRLF 标志可进行当前文件的行尾序列切换
    • git version 2.35.1.windows.2 在推送代码时会自动把行尾序列切换为 LF,当拉取代码到本地时会根据当前操作系统,自动把文件转换为 CRLF 或 LF。所以 windows 系统会出现 Delete ␍(eslintprettier/prettier) 无法修复的问题。
    • 可以通过添加 .gitattributes 配置文件,声明在拉取到本地时使用的行尾序列为 LF。
    • 但不建议这么做,实际运用中发现配置后 git 提交出现未修改得文件被识别为已修改,且无法提交
    • 建议不对行尾序列做限定

相关文件

3.0

  • .eslintrc.js
module.exports = {
/**
* 标识当前配置文件为eslint的根配置文件,让其停止在父级目录中继续寻找。
* eslintrc.js 默认会层叠使用所有找到的配置文件,越近的规则权限越高。
*/
root: true,
/**
* 一个环境定义了一组预定义的全局变量
* browser 浏览器环境中的全局变量
* node
* es6 启用了除 modules 以外的所有特性
* amd 将 require() 和 define() 定义为像 amd 一样的全局变量
* commonjs CommonJS 全局变量和 CommonJS 作用域 (用于 Browserify/WebPack 打包的只在浏览器中运行的代码)
* jquery
* mongo MongoDB 全局变量
* worker:Web Worker全局变量
* serviceworker:Service Worker 全局变量
*/
env: {
node: true
},
extends: ["plugin:vue/essential", "@vue/prettier"],
rules: {
"no-console": process.env.NODE_ENV === "production" ? "error" : "off",
"no-debugger": process.env.NODE_ENV === "production" ? "error" : "off"
},
/**
* 解析器配置项
* 传递给解析器使用,具体有哪些值由使用的解析器决定
*/
parserOptions: {
parser: "babel-eslint"
}
};
  • .package.json
...
"devDependencies": {
"@vue/cli-plugin-babel": "^3.12.0",
"@vue/cli-service": "^3.12.0",
"sass": "^1.19.0",
"sass-loader": "^8.0.0",
"vue-template-compiler": "^2.6.10", "@vue/cli-plugin-eslint": "^3.12.0",
"eslint": "^5.16.0",
"babel-eslint": "^10.0.1",
"prettier": "^1.18.2",
"lint-staged": "^8.1.5", "eslint-plugin-prettier": "^3.1.0",
"eslint-plugin-vue": "^5.0.0",
"@vue/eslint-config-prettier": "^5.0.0"
},
...

4.0

  • .eslintrc.js
module.exports = {
root: true,
env: {
node: true,
},
extends: ["plugin:vue/essential", "eslint:recommended", "@vue/prettier"],
parserOptions: {
parser: "babel-eslint",
},
rules: {
"no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
"no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
},
};
  • .package.json
...
"devDependencies": {
"@vue/cli-plugin-babel": "~4.5.19",
"@vue/cli-plugin-router": "~4.5.19",
"@vue/cli-plugin-vuex": "~4.5.19",
"@vue/cli-service": "~4.5.19",
"sass": "^1.26.5",
"sass-loader": "^8.0.2",
"vue-template-compiler": "^2.6.11", "@vue/cli-plugin-eslint": "~4.5.19",
"eslint": "^6.7.2",
"babel-eslint": "^10.1.0",
"prettier": "^2.2.1",
"lint-staged": "^9.5.0", "eslint-plugin-prettier": "^3.3.1",
"eslint-plugin-vue": "^6.2.2",
"@vue/eslint-config-prettier": "^6.0.0"
},
...

@vue/cli eslint插件使用指南的更多相关文章

  1. Vue CLI 是如何实现的 -- 终端命令行工具篇

    Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,提供了终端命令行工具.零配置脚手架.插件体系.图形化管理界面等.本文暂且只分析项目初始化部分,也就是终端命令行工具的实现. 0. 用法 ...

  2. Vue CLI 3开发中屏蔽的EsLint错误 (.eslintrc.js 在vue3+中 修改这个)

    1.关闭eslint校验有了eslint的校验,可以来规范开发人员的代码,是挺好的.但是有些像缩进.空格.空白行之类的规范,在开发过程中一直报错,未免太过于苛刻了.所以,我还是会选择关闭eslint校 ...

  3. vscode 中 vue项目使用eslint插件 检查代码

    前言 本文章项目由vue-cli3创建 vscode版本1.36.1 eslint1.9.0 在网上找了一大堆文章,不知是什么原因,没有一篇可以直接使用的 折腾了许久,直接按eslint插件的说明,竟 ...

  4. vue cli 3

    介绍 Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统 通过 @vue/cli 搭建交互式的项目脚手架. 通过 @vue/cli + @vue/cli-service-global 快 ...

  5. Vue CLI 介绍安装

    https://cli.vuejs.org/zh/guide/ 介绍 警告 这份文档是对应 @vue/cli 3.x 版本的.老版本的 vue-cli 文档请移步这里. Vue CLI 是一个基于 V ...

  6. 快速上手最新的 Vue CLI 3

    翻译:疯狂的技术宅 原文:blog.logrocket.com/getting-sta- 概要:本文将指导你快速上手 Vue CLI 3,包括最新的用户图形界面和即时原型制作功能的使用步骤. 介绍 尤 ...

  7. vue项目eslint环境配置与vscode配置eslint

    eslint基础环境搭建 全局安装eslint:npm install eslint -g 项目eslint初始化:eslint --init,按团队或自己的编程风格回答三道题. ? How woul ...

  8. Vue Cli安装以及使用

      因为公司项目要用vue框架,所以会用vue-cli来新建项目.用过vue的都知道,要全局安装vue以及脚手架vue-cli,然后执行vue init webpack projectname来新建v ...

  9. [WIP]Vue CLI

    更新: 2019/05/30 文档: https://cli.vuejs.org/zh/  安装 npm install -g @vue/cli 确认是否成功安装 vue --version 基础   ...

  10. Vue CLI 3.x 简单体验

    文档 中文文档 补充于02月10日 vue脚手架的3.x版本已经在开发中,现在还处于alpha版本.我们来看看有哪些变化. 使用 npm install -g @vue/cli 命名方式已经改为npm ...

随机推荐

  1. 从基础到高级应用,详解用Python实现容器化和微服务架构

    本文分享自华为云社区<Python微服务与容器化实践详解[从基础到高级应用]>,作者: 柠檬味拥抱. Python中的容器化和微服务架构实践 在现代软件开发中,容器化和微服务架构已经成为主 ...

  2. sed 进阶使用

    sed 进阶使用 工作原理 sed 维护两个数据缓冲区: 活动模式空间 和 辅助保持空间 两者最初都是空的 sed 通过对每一行输入执行以下循环进行操作 从输入流中读取一行,删除任何尾随的换行符,并将 ...

  3. STL 算法 <algorithm>,

    STL 算法部分主要由头文件 <algorithm>,<numeric>,<functional > 组成.要使用 STL 中的算法函数必须包含头文件 < a ...

  4. TCP协议测试

    TCP协议测试 首先需要测试TCP协议的连接 tcping命令是针对tcp监控的,也可以看到ping值,即使源地址禁ping也可以通过tcping来监控服务器网络状态,除了简单的ping之外,tcpi ...

  5. Jmeter函数助手7-timeShift

    timeShift函数用于获取移动时间变化后的指定格式时间. Format string for DateTimeFormatter (optional) (default unix timestam ...

  6. 【Java】将枚举类转换为Redis字典缓存

    字典翻译框架实现看这篇: https://www.cnblogs.com/mindzone/p/16890632.html 枚举的特性 首先是枚举的一些特性: 1.枚举实例直接在枚举类中声明 2.重载 ...

  7. 【ActiveJdbc】03

    一.查询API 简单条件筛选: List<Person> list = Person.where("name = 'John'") 动态参数条件: List<Pe ...

  8. 【H5】11 表格

    概述: 在HTML中一个很普通的任务是构建表格数据,有大量的元素和属性是来满足这种需求的. 只需要一点儿的CSS来设定风格,HTML让在web上显示表格数据变的很容易,例如你的学校的教学计划,你当地的 ...

  9. jmeter 使用非 GUI 模式运行测试脚本

    使用非 GUI 模式运行测试脚本时可以使用的一些命令:-h 帮助 -> 打印出有用的信息并退出-n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter-t 测试文件 -> ...

  10. 英特尔Movidius神经计算棒的介绍

    手上有一款英特尔Movidius神经计算棒,本打算疫情结束返回学校,突然得到非官方的通知告诉我只能等到9月份返校了,于是就想起这个被闲置的计算棒了,手上的是1代的计算棒,不过1代的和二代的使用起来方法 ...