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

 

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

 

Vue 有关的格式化工具


1.ESLint(官网

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

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

请添加图片描述

 

VSCode 保存修复配置
    "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:

$ npm install eslint --save-dev

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

$ ./node_modules/.bin/eslint --init

然后按照可选一步一步配置:
在这里插入图片描述

 

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

在这里插入图片描述

module.exports = {
  env: {
    browser: true,
    es2021: true
  },
  extends: [
    'plugin:vue/essential',
    'standard'
  ],
  parserOptions: {
    ecmaVersion: 12,
    sourceType: 'module'
  },
  plugins: [
    'vue'
  ],
  rules: {
  }
}

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

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

+ 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配置最佳实践:

/*
 * @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 去禁止一些规则,特定处理一些文件。

忽略规则

/* eslint-disable */
    代码块
/* eslint-enable */
一行代码 // eslint-disable-line
// eslint-disable-next-line
下一行的代码

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星宇大前端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值