`

eslint规则记录

 
阅读更多

ESLint 支持几种格式的配置文件:

  • JavaScript - 使用 .eslintrc.js 然后输出一个配置对象。
  • YAML - 使用 .eslintrc.yaml 或 .eslintrc.yml 去定义配置的结构。
  • JSON - 使用 .eslintrc.json 去定义配置的结构,ESLint 的 JSON 文件允许 JavaScript 风格的注释。
  • (弃用) - 使用 .eslintrc,可以使 JSON 也可以是 YAML。
  • package.json - 在 package.json 里创建一个 eslintConfig属性,在那里定义你的配置。

如果同一个目录下有多个配置文件,ESLint 只会使用一个。优先级顺序如下:

  1. .eslintrc.js
  2. .eslintrc.yaml
  3. .eslintrc.yml
  4. .eslintrc.json
  5. .eslintrc
  6. package.json

示例代码(文件.eslintrc.js):

{
    // 继承规则eslint:recommended
    // "extends": "eslint:recommended",
    /* 默认情况下,ESLint 会在所有父级目录里寻找配置文件
       ESLint 一旦发现配置文件中有 "root": true,它就会停止在父级目录中寻找
    */
    "root": true,
    /* 指定你想启用的环境
        browser - 浏览器环境中的全局变量。
        node - Node.js 全局变量和 Node.js 作用域。
        commonjs - CommonJS 全局变量和 CommonJS 作用域 (用于 Browserify/WebPack 打包的只在浏览器中运行的代码)。
        shared-node-browser - Node.js 和 Browser 通用全局变量。
        es6 - 启用除了 modules 以外的所有 ECMAScript 6 特性(该选项会自动设置 ecmaVersion 解析器选项为 6)。
        ...
        [参考地址] http://eslint.cn/docs/user-guide/configuring#specifying-environments
    */
    "env": {
        "browser": true,
        "node": true,
        "commonjs": true,
        "es6": true,
        "shared-node-browser": true
    },
    /* 使用 globals 指出你要使用的全局变量,将变量设置为 true 将允许变量被重写,或 false 将不允许被重写
       [参考地址] http://eslint.cn/docs/user-guide/configuring#specifying-globals
    */
    "globals": {
        // "var1": true,
        // "var2": false
    },
    /* ESLint 支持使用第三方插件。在使用插件之前,你必须使用 npm 安装它。
       在配置文件里配置插件时,可以使用 plugins 关键字来存放插件名字的列表。插件名称可以省略 eslint-plugin- 前缀。
       [参考地址] http://eslint.cn/docs/user-guide/configuring#configuring-plugins
    */
    "plugins": [
        // "plugin1",
        // "eslint-plugin-plugin2"
    ],
    /* 解析器, ESLint 默认使用esprima作为其解析器,你可以在配置文件中指定一个不同的解析器
       [参考地址] http://eslint.cn/docs/user-guide/configuring#specifying-parser
    */
    "parser": "babel-eslint",
    /* 规则
       [规则配置参考] http://eslint.cn/docs/user-guide/configuring#configuring-rules
       [具体规则解释] http://eslint.cn/docs/rules/${rule-key}
    */
    "rules": {
        // 要求或禁止使用分号代替 ASI
        "semi": ["error", "always"],
        // 禁止使用alert
        "no-alert": "error",
        // 禁止定义未使用的变量
        "no-unused-vars": "error",
        // 不允许在 case 子句中使用词法声明
        "no-case-declarations": "error",
        // 禁止修改类声明的变量
        "no-class-assign": "error",
        // 要求在构造函数中有 super() 的调用
        "constructor-super":"error",
        // 禁止与 -0 进行比较
        "no-compare-neg-zero":"error",
        // 禁止条件表达式中出现赋值操作符
        "no-cond-assign":"error",
        // 禁用 console
        "no-console":"error",
        // 禁止修改 const 声明的变量
        "no-const-assign":"error",
        // 禁止在条件中使用常量表达式
        "no-constant-condition":"error",
        // 禁止在正则表达式中使用控制字符
        "no-control-regex":"error",
        // 禁用 debugger
        "no-debugger":"error",
        // 禁止删除变量
        "no-delete-var":"error",
        // 禁止 function 定义中出现重名参数
        "no-dupe-args":"error",
        // 禁止类成员中出现重复的名称
        "no-dupe-class-members":"error",
        // 禁止对象字面量中出现重复的 key
        "no-dupe-keys":"error",
        // 禁止出现重复的 case 标签
        "no-duplicate-case":"error",
        // 禁止出现空语句块
        "no-empty":"error",
        // 禁止在正则表达式中使用空字符集
        "no-empty-character-class":"error",
        // 禁止使用空解构模式
        "no-empty-pattern":"error",
        // 禁止对 catch 子句的参数重新赋值
        "no-ex-assign":"error",
        // 禁止不必要的布尔转换
        "no-extra-boolean-cast":"error",
        // 禁止不必要的分号
        "no-extra-semi":"error",
        // 禁止 case 语句落空
        "no-fallthrough":"error",
        // 禁止对 function 声明重新赋值
        "no-func-assign":"error",
        // 禁止对原生对象或只读的全局对象进行赋值
        "no-global-assign":"error",
        // 禁止在嵌套的块中出现变量声明或 function 声明
        "no-inner-declarations":"error",
        // 禁止 RegExp 构造函数中存在无效的正则表达式字符串
        "no-invalid-regexp":"error",
        // 禁止在字符串和注释之外不规则的空白
        "no-irregular-whitespace":"error",
        // 禁止空格和 tab 的混合缩进
        "no-mixed-spaces-and-tabs":"error",
        // 禁止 Symbolnew 操作符和 new 一起使用
        "no-new-symbol":"error",
        // 禁止把全局对象作为函数调用
        "no-obj-calls":"error",
        // 禁用八进制字面量
        "no-octal":"error",
        // 禁止多次声明同一变量
        "no-redeclare":"error",
        // 禁止正则表达式字面量中出现多个空格
        "no-regex-spaces":"error",
        // 禁止自我赋值
        "no-self-assign":"error",
        // 禁用稀疏数组稀,疏数组包括很多空位置,经常是由于在数组字面量中使用多个逗号造成的,例如:var items = [,,];
        "no-sparse-arrays":"error",
        // 禁止在构造函数中,在调用 super() 之前使用 this 或 super
        "no-this-before-super":"error",
        // 禁用未声明的变量,除非它们在 /*global */ 注释中被提到
        "no-undef":"error",
        // 禁止出现令人困惑的多行表达式
        "no-unexpected-multiline":"error",
        // 禁止在return、throw、continue 和 break 语句之后出现不可达代码
        "no-unreachable":"error",
        // 禁止在 finally 语句块中出现控制流语句
        "no-unsafe-finally":"error",
        // 禁止对关系运算符的左操作数使用否定操作符
        "no-unsafe-negation":"error",
        // 禁用未使用过的标签
        "no-unused-labels":"error",
        // 禁用不必要的转义字符
        "no-useless-escape":"error",
        // 要求使用 let 或 const 而不是 var
        "no-var": "error",
        // 禁止出现多行空行
        "no-multiple-empty-lines": ["error", { "max": 1}],
        // 禁用行尾空格
        "no-trailing-spaces": "error",
        // 禁止使用多个空格
        "no-multi-spaces": "error",
        // 要求 generator 函数内有 yield
        "require-yield":"error",
        // 要求使用 isNaN() 检查 NaN
        "use-isnan":"error",
        // 强制 typeof 表达式与有效的字符串进行比较
        "valid-typeof":"error",
        // 强制使用一致的反勾号、双引号或单引号(单引号)
        "quotes": ["error", "single"],
        // 强制在逗号前后使用一致的空格
        "comma-spacing": ["error", { "before": false, "after": true }],
        // 强制使用一致的缩进
        "indent": ["error", 4],
        // 要求或禁止末尾逗号
        "comma-dangle": ["error", "never"],
        // 强制在圆括号内使用一致的空格
        "space-in-parens": ["error", "never"],
        // 要求操作符周围有空格
        "space-infix-ops": "error",
        // 强制在对象字面量的属性中键和值之间使用一致的间距
        "key-spacing": ["error", { "mode": "strict" }],
        // 禁用逗号操作符
        // "no-sequences": "error",
        // 强制操作符使用一致的换行符
        "operator-linebreak": ["error", "after"],
        // 要求或禁止在变量声明周围换行
        "one-var-declaration-per-line": ["error", "initializations"],
        // 要求对象字面量属性名称用引号括起来
        // "quote-props": ["error", "always"],
        // 更多其他规则,参考地址:http://eslint.cn/docs/rules/
    }
}

 

对于不需要做语法检测的可在.eslintignore文件中配置,示例如下:

bin/*
src/js/libs/*.js

  

 

命令行用法示例(对src目录下的.js,.vue格式的文件做语法检测,配置文件.eslintrc.js ,忽略文件配置:.eslintignore, 然后将结果输出到eslint-report.json):  

eslint --ext .js,.vue src/ --config .eslintrc.js --output-file ./eslint-report.json --ignore-path .eslintignore

加--fix 参数可自动修复部分语法规范问题 

分享到:
评论

相关推荐

    eslint Demo

    在 `eslint Demo` 项目中,`.gitignore` 文件可能包含了对编译产生的临时文件、日志文件等的忽略规则,以避免这些不必要的文件污染版本历史。 **.eslintrc.js 配置文件** `.eslintrc.js` 是 `eslint` 的配置文件,...

    eslint+prettier.zip

    总的来说,"eslint+prettier.zip"提供了一个完整的uni-app项目代码质量和格式化解决方案,结合了`ESLint`的规则检查和`Prettier`的自动格式化,配合其他配置文件,可以显著提升团队的开发效率和代码质量。

    esplint:ESLint警告跟踪器,可帮助将规则引入旧代码库

    ESLint警告跟踪器,可帮助将规则引入旧代码库 关于 整理是捕获错误代码和实施最佳实践的有力方法。 也就是说,为现有项目设置规则可能很困难。 它会浮出水面,您必须先解决这些隐患,然后才能使用该规则。 相反,...

    npm-emacs-scaffolding:使用babel,eslint设置一个npm项目,现在可以用emacs编辑

    使用babel,eslint设置一个npm项目,现在使用emacs对其进行编辑。 先决条件 EMACS 24或更高版本。 npm 吉特 设置 资料库 克隆此存储库。 删除.git目录以摆脱以前的历史记录。 重新初始化git。 git clone ...

    前端开源库-eslint-config-medikoo-es3.zip

    使用Eslint配置可以自动检查并提示开发者遵循这些规则。 5. **配置文件**:`.eslintrc` 文件是Eslint的配置文件,包含了所有自定义的规则和设置。通过导入此配置,项目可以一键应用统一的代码风格。 6. **静态代码...

    eslint-config:为ESLintReact特定的掉毛规则

    对ESLint的特定掉毛规则做出React。 安装 使用npm或Yarn安装: npm : npm install @pobedit/eslint-config --save 纱线: yarn add @pobedit/eslint-config 基本用法 将@ pobedit / eslint-config添加到....

    eslint-plugin-actool::notebook:棉绒注释和代码现状

    Actool的ESLint规则可以验证代码/注释的真实性和相关性。 :collision: 控制 :timer_clock: 控制 :radioactive: 控制用法要求:确保您的存储库具有git历史记录 :dizzy: 请参阅我们的以快速了解功能和概念如果您尚未为...

    eslint-config-strict:ESLint可共享的配置,用于严格限制

    每条规则均已记录,说明理由,并在文件夹中包含示例。 如果您觉得规则有误,请阅读此文件,或将其他文件转发给它! 安装 安装此配置包和ESLint: $ npm install --save-dev eslint-config-strict 如果您使用的是...

    eslint-config

    这个工具主要用于定义和应用一套统一的ESLint规则,帮助开发者遵循一致的编码规范,提升代码可读性和团队协作效率。`eslint-config`通常会包含一系列预设的规则,这些规则涵盖了变量声明、函数使用、错误处理、导入...

    eslint-config:通用ECMAScript和TypeScript eslint config

    TODO:记录此配置中使用的规则,duh。入门安装套件使用npm: npm i -D @faustt/eslint-config或使用纱线: yarn add -D @faustt/eslint-config安装所有对等依赖项使用npm: npm i -D @typescript-eslint/eslint-...

    eslint-plugin-import-order-alphabetical:已淘汰

    4. **版本控制**:在代码库中进行版本控制,记录变更,以便团队成员了解并适应新规则。 5. **测试**:更新后进行充分的测试,确保代码质量不受影响。 在实际开发中,持续关注社区更新和最佳实践,定期评估并更新...

    vite-vue3-eslint-typescript.zip

    `.eslintrc.cjs` 文件是ESLint的配置文件,定义了项目的代码风格规则。 4. **TypeScript**:是一种强类型、面向对象的超集语言,它可以编译为纯JavaScript。TypeScript引入了接口、泛型、枚举等高级类型,以及对ES6...

    eslint-config-brunch

    `eslint-config-brunch` 提供了一套预设的规则集,使得 Brunch 用户可以轻松地在他们的项目中集成 ESLint,确保团队间的代码一致性,并减少潜在的运行时问题。这些规则可能包括但不限于变量声明、括号使用、缩进、...

    eslint-plugin-new-with-error:需要`throw new Error()`而不是`throw Error()`

    通过遵循这一规则,我们可以编写出更易于理解和维护的代码,同时也能充分利用JavaScript的异常处理机制。在使用这个插件后,开发团队可以确保在整个项目中保持一致的错误处理模式,从而提高代码的可靠性和可维护性。

    react开发框架.zip

    `.eslintrc.json` 是ESLint的配置文件,与`.eslintignore`类似,但它是更具体的ESLint规则设置。 `LICENSE` 文件通常包含项目使用的开源许可协议,比如MIT、Apache 2.0等,这决定了其他人可以如何使用和分发这个...

    rockpack:Rockpack是一个简单的解决方案,可在5分钟内通过服务器端渲染,捆绑,整理,测试,记录,本地化来创建React Application

    Rockpack是一个用于通过服务器端渲染,捆绑,整理,测试创建React Application的简单解决方案。 Rockpack的主要目标是... Rockpack支持大多数webpack最佳实践配置,eslint规则,笑话,打字稿,即使在大型项目中也能很

    semgrep-rules:我的自定义semgrep规则

    自定义规则可能包括检查线程安全问题、日志记录的最佳实践、SQL注入漏洞等。例如,一个简单的规则可能是查找所有未捕获的异常,以确保代码具有良好的错误处理机制。 **Golang规则应用:** 在Golang中,`Semgrep`...

    Mocha-eslint-coverage-pipelin-testing

    - `package.json` 文件:记录项目的依赖和脚本,包括Mocha、ESLint和覆盖率工具的版本信息。 - `mocha.opts` 或类似文件:定义Mocha的默认配置,如测试环境、报告格式等。 - `test` 目录:存放测试文件,每个测试...

    viewUIAdminPro文件详解

    ESLint规则配置文件,定义了代码风格和错误检查规则,帮助保持代码一致性和可读性,减少潜在的错误。 #### .gitignore 指定Git版本控制系统应该忽略的文件或目录,避免不必要的文件被提交到仓库中,比如构建输出...

    大众明星网后台项目 415

    3. `.eslintignore` 和 `.eslintignoretest`:这两个文件都是ESLint的忽略规则配置。`.eslintignore`用于指定ESLint(一个静态代码分析工具)不应检查的文件或目录,以避免不必要的警告或错误。`.eslintignoretest`...

Global site tag (gtag.js) - Google Analytics