前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Vue 项目eslint 配置编程风格(VScode)

Vue 项目eslint 配置编程风格(VScode)

作者头像
星宇大前端
发布2020-11-03 10:45:46
发布2020-11-03 10:45:46
3.4K00
代码可运行
举报
文章被收录于专栏:大宇笔记大宇笔记
运行总次数:0
代码可运行

观点:程序运行结果有对错,代码从可读性、扩展性、复用性的标准评判也可以读出来好坏,但是编程风格真的又对错吗?尤其是JS这门脚本语言,在不同领域都有应用,它先天性的原因编程风格有更多的发挥,到底谁写的对错呢,比如单引号还是双引号,加不加分号这种问题。我认为风格没有好坏,一个团队统一即可,保持代码简洁,漂亮,统一。

Vue 有关的格式化工具


1.ESLint(官网

ESLint 是在 ECMAScript/JavaScript 代码中识别和报告模式匹配的工具,它的目标是保证代码的一致性和避免错误。在许多方面,它和 JSLint、JSHint 相似,除了少数的例外: ESLint 使用 Espree 解析 JavaScript。 ESLint 使用 AST 去分析代码中的模式 ESLint是完全插件化的。 每一个规则都是一个插件并且你可以在运行时添加更多的规则。

JS 做为一种动态语言,写起来可以随心所欲,bug 遍野,但是通过合适的规则来约束,能让我们的代码更健壮,工程更可靠。 ESLint 可以自动检测配置解决这些问题。

VSCode 保存修复配置
代码语言:javascript
代码运行次数:0
运行
复制
    "editor.codeActionsOnSave": {
        "source.fixAll.eslint": true
    }

2.Vetur

最初装的时候是为了显示Vue高亮和代码提示,其实他还有强大的Format能力。

3.Prettier

Prettier的中文意思是“漂亮的、机灵的”,也是一个流行的代码格式化工具的名称,它能够解析代码,使用你自己设定的规则来重新打印出格式规范的代码。

Prettier具有以下几个有优点:

可配置化 支持多种语言 集成多数的编辑器 简洁的配置项

很多项目都会使用ESLint来提高代码的质量,有两种方式能够集成Prettier和ESLint,你也可以单独或同时使用它们。使用ESLint+Prettier主要是让ESLint使用Prettier规则.

**总结:**三种都可以格式化,但是又有互相没有的部分,所以可以一起共同使用。但是同时在VScode配置的时候注意冲突问题,保存自动格式化时候很容易冲突。解决冲突文章

Vue新项目配置ESLint


我们在使用Vue UI 创建项目得时候,选择Linter/Formatter的时候我们有如下选项:

  • ESLint with error prevention only --仅错误预防
  • ESLint + Airbnb config --Airbnb配置
  • ESLint + Standard config --标准配置
  • ESLint + Prettier --Prettier风格规则

Vue老项目配置ESLint


你可以使用 npm 安装 ESLint:

代码语言:javascript
代码运行次数:0
运行
复制
$ npm install eslint --save-dev

紧接着你应该设置一个配置文件:

代码语言:javascript
代码运行次数:0
运行
复制
$ ./node_modules/.bin/eslint --init

然后按照可选一步一步配置:

安装之后你就可以看到目录里面有eslint 的配置文件:

代码语言:javascript
代码运行次数:0
运行
复制
module.exports = {
  env: {
    browser: true,
    es2021: true
  },
  extends: [
    'plugin:vue/essential',
    'standard'
  ],
  parserOptions: {
    ecmaVersion: 12,
    sourceType: 'module'
  },
  plugins: [
    'vue'
  ],
  rules: {
  }
}

这里基本上eslint 就可以在项目里生效了,还需要自己风格配置和工具配置。

按照自己选项安装之后,可以发现安装了如下依赖:

代码语言:javascript
代码运行次数:0
运行
复制
+ eslint@7.12.1
+ eslint-plugin-node@11.1.0
+ eslint-config-standard@16.0.0   //对应配置项的extends:'standard'
+ eslint-plugin-import@2.22.1
+ eslint-plugin-vue@7.1.0   //对应配置项的extends:plugin:vue/essential
+ eslint-plugin-promise@4.2.1

除了 eslint-config-standard@16.0.0还有一个eslint-plugin-vue@7.1.0

添加这个插件可以检查.vue 文件的 template ,同时该插件提供多种规则标准集关于vue3和vue2。建议使用:Recommended,可以规范template 标签。

ESLint常用配置说明


一个环境定义了一组预定义的全局变量。

配置项

说明

env

运行环境

一个配置文件可以被基础配置中的已启用的规则继承。

配置项

说明

extends

继承规则,可继承规则集合

ESLint 默认使用Espree作为其解析器,你可以在配置文件中指定一个不同的解析器

配置项

说明

parserOptions

配置制定解析器

ESLint 支持使用第三方插件。在使用插件之前,你必须使用 npm 安装它。

配置项

说明

plugins

插件

一个环境定义了一组预定义的全局变量。

配置项

说明

Processor

插件可以提供处理器

ESLint 附带有大量的规则。你可以使用注释或配置文件修改你项目中要使用的规则。要改变一个规则设置,你必须将规则 ID 设置为下列值之一:

“off” 或 0 - 关闭规则 “warn” 或 1 - 开启规则,使用警告级别的错误:warn (不会导致程序退出) “error” 或 2 - 开启规则,使用错误级别的错误:error (当被触发的时候,程序会退出)

配置项

说明

Rules

规则

当访问当前源文件内未定义的变量时,no-undef 规则将发出警告。如果你想在一个源文件里使用全局变量,推荐你在 ESLint 中定义这些全局变量,这样 ESLint 就不会发出警告了。你可以使用注释或在配置文件中定义全局变量。

配置项

说明

globals

全局变量

ESLint 规则说明


我们可以根据规则配置,除了extends 规则集之外的规则补充。

具体规则描述查看官网

Rules配置最佳实践:

代码语言:javascript
代码运行次数:0
运行
复制
/*
 * @Description: 
 * @Autor: ZY
 * @Date: 2020-09-22 11:09:46
 * @LastEditors: ZY
 * @LastEditTime: 2020-10-24 18:14:07
 */
module.exports = {
  root: true,
  env: {
    browser: true,
    node: true
  },
  'extends': [
    'plugin:vue/strongly-recommended',   //vue 插件推荐规则
    '@vue/standard'
  ],
  rules: {
    'eqeqeq':0,				
    'no-console': 'off',
    'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
    'generator-star-spacing': 'off',//强制 generator 函数中 * 号周围使用一致的空格
    'no-mixed-operators': 0,//禁止混合使用不同的操作符
    'vue/max-attributes-per-line': [ //属性换行,和单行多行最大个数
      2,
      {
        'singleline': 5,
        'multiline': {
          'max': 1,
          'allowFirstLine': false
        }
      }
    ],
    'vue/attribute-hyphenation': 0,   //属性推荐-间隔,避免驼峰
    'vue/html-self-closing': 0,
    'vue/component-name-in-template-casing': 0,
    'vue/html-closing-bracket-spacing': 0,
    'vue/singleline-html-element-content-newline': 0,
    'vue/no-unused-components': 0,
    'vue/multiline-html-element-content-newline': 0,
    'vue/no-use-v-if-with-v-for': 0,
    'vue/html-closing-bracket-newline': 0,
    'vue/no-parsing-error': 0,
    'no-tabs': 0,
    'quotes': [
      2,
      'single',
      {
        'avoidEscape': true,
        'allowTemplateLiterals': true
      }
    ],
    'semi': [
      2,
      'never',
      {
        'beforeStatementContinuationChars': 'never'
      }
    ],
    'no-delete-var': 2,
    'prefer-const': [
      2,
      {
        'ignoreReadBeforeAssign': false
      }
    ]
  },
  parserOptions: {
    parser: 'babel-eslint'
  },
  overrides: [   
    {
      files: [
        '**/__tests__/*.{j,t}s?(x)',
        '**/tests/unit/**/*.spec.{j,t}s?(x)'
      ],
      env: {
        jest: true
      }
    }
  ]
}

我们可以使用overrides 去禁止一些规则,特定处理一些文件。

忽略规则

代码语言:javascript
代码运行次数:0
运行
复制
/* eslint-disable */
    代码块
/* eslint-enable */
代码语言:javascript
代码运行次数:0
运行
复制
一行代码 // eslint-disable-line
代码语言:javascript
代码运行次数:0
运行
复制
// eslint-disable-next-line
下一行的代码

添加 .eslintignore 文件,在里面配置忽略路径即可。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/10/31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Vue 有关的格式化工具
    • 1.ESLint(官网)
      • VSCode 保存修复配置
    • 2.Vetur
    • 3.Prettier
  • Vue新项目配置ESLint
  • Vue老项目配置ESLint
  • ESLint常用配置说明
  • ESLint 规则说明
    • Rules配置最佳实践:
    • 忽略规则
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档