eslint 保存自动格式化_ESLint一款可组装的JavaScript和JSX检查工具

128e2dd6fe3306cb4e3a475e513dd9ae.png

使用vs code为例,创建项目ESLintDemo

npm initnpm install --save-dev eslingeslint --init

项目的基本目录

bc20c9337690e74e50fd67b7d150d6a2.png

产生.eslintrc文件,根据执行过程中选择会产生不同格式的文件类型,这里以json格式为例,比如我在项目中配置的.eslintrc.json文件

{    "env": {        "es6": true,        "node": true    },    "extends": "eslint:recommended",    "globals": {        "Atomics": "readonly",        "SharedArrayBuffer": "readonly"    },    "parserOptions": {        "ecmaFeatures": {            "jsx": true        },        "ecmaVersion": 2018,        "sourceType": "module"    },    "plugins": [        "react"    ],    "rules": {        // 不否允许对象中出现结尾逗号        "comma-dangle": [            "error",            "never"        ],        // 必须在代码尾部添加分号        "semi": "error",        // 把双引号换成单引号        "quotes": [            "error",            "single"        ],        // 强制驼峰命名规则        "camelcase": [            2,            {                "properties": "never"            }        ],        // 两个缩进空格        "indent": [            "error",            2        ],        // 不允许出现空代码块,除了catch        "no-empty": [            "error",            {                "allowEmptyCatch": true            }        ],        // 要求使用 isNaN() 检查 NaN        "use-isnan": "error",        "require-await": "error",        // 禁止 if 作为唯一的语句出现在 else 语句中        "no-lonely-if": "error",        // 强制在注释中 // 或 /* 使用一致的空格        "spaced-comment": [            "error",            "always",            {                "line": {                    "markers": [                        "/"                    ],                    "exceptions": [                        "-",                        "+"                    ]                },                "block": {                    "markers": [                        "!"                    ],                    "exceptions": [                        "*"                    ],                    "balanced": true                }            }        ],        // 强制模块内的 import 排序        "sort-imports": [            "error",            {                "ignoreCase": false,                "ignoreDeclarationSort": false,                "ignoreMemberSort": false,                "memberSyntaxSortOrder": [                    "none",                    "all",                    "multiple",                    "single"                ]            }        ],        // 优先使用数组和对象解构        "prefer-destructuring": [            "error",            {                "array": true,                "object": true            },            {                "enforceForRenamedProperties": false            }        ],        // 禁止出现多行空行,最多两行        "no-multiple-empty-lines": "error",        "brace-style": [            "error",            "1tbs"        ],        // 禁用魔术数字        "no-magic-numbers": "error",        // 禁止使用var        "no-var": "error",        // 禁止 case 语句落空        "no-fallthrough": "error"    }}

不知道配置也没关系,打开官方文档,选择ESLint Demo,可视化选择需要的选项,自动生成配置好的文件,直接到底部下载文件即可使用。

760464e960b3b14ff003feb1a8d079a6.png
5f48b22e124528e3449c05c9114b289a.png

展开rules configuration(默认是合上的)

7c9bcfd9f0770f79da6fea5a31e15de4.png

底部点击链接就可以下载完整的配置文件。

706147be26f7891aa7c9915ded48fc30.png

每个rules的key的使用说明,选择“用户指南”》“规则”有详细的说明。

708acb0697443535248cc593e161cdd3.png

常用的命令

// 执行对src目录下的文件执行规范检测并进行修正eslint ./src --fix

文档中,在加了--fix参数的时候,标识了小扳手的选项表示可以自动进行修复。

e1199d716e4dceed617db84548538e58.png

配合vs code可以在保存的时候自动执行eslint格式化

"editor.codeActionsOnSave": {

"source.fixAll": true,

"source.fixAll.eslint": true

}

项目配合package.json的scripts可以通过npm run xxx进行执行,比如配合webpack等插件,能在编译打包的前自动进行规范检查。

58a993ca57563f27fb1001bc18176d61.png

如果要排除某些文件或者目录的检查,添加.eslintignore文件,在文件配置上要排除的文件或者目录。

下面来做个试验

e6b0648f984a3e82b97d223426725a02.png

那么要排除掉ignoretest目录的检查,那么对.eslintignore进行修改

6dd4719342d616d3117d4d416950eac4.png

如果没用添加.eslintignore,也可以在package.json中进行过滤配置,ESLint 将在 package.json 文件中查找 eslintIgnore 键,来检查要忽略的文件,值得注意的是,如果有.eslintignore文件,package.json的配置将失效。

4ebe676552c717fcec568faae3a583a9.png

注意点:

如果配置了"no-undef": "error"

nodejs的一些全局变量比如:process,__dirname等就会报错,配合使用

"no-global-assign": "error"

env的配置项,同时要设置"node":true

更详尽的说明可以参考ESLint的官网http://eslint.cn

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值