vscode中配置eslint

Wesley13
• 阅读 831

安装Nodejs,然后安装eslint

使用全局安装:
npm install -g eslint
npm install -g eslint-plugin-react
npm install -g eslint-plugin-html

安装完毕后,我们使用"eslint --init"命令在用户目录中生成一个配置文件(也可以在任何你喜欢的位置进行生成):".eslintrc.js"
执行命令后,我们选择相应的代码风格,也可以自定义,在这里我使用popular->standard->JS风格的规则,自定义规则参考:

module.exports = {

    "plugins": [
            "react",
            //"html"
    ],
    "env": {
            "node": true,
            "jquery": true,
            "es6": true,
            "browser": true
    },
    "globals": {
            "angular": false
    },
    "parser": "babel-eslint",
    "rules": {
            //官方文档 http://eslint.org/docs/rules/
            //参数:0 关闭,1 警告,2 错误
            // "quotes": [0, "single"],                  //建议使用单引号
            // "no-inner-declarations": [0, "both"],     //不建议在{}代码块内部声明变量或函数
            "no-extra-boolean-cast": 1, //多余的感叹号转布尔型
            "no-extra-semi": 1, //多余的分号
            "no-extra-parens": 0, //多余的括号
            "no-empty": 1, //空代码块

            //使用前未定义
            "no-use-before-define": [
                    0,
                    "nofunc"
            ],

            "complexity": [0, 10], //圈复杂度大于*

            //定义数组或对象最后多余的逗号
            "comma-dangle": [
                    0,
                    "never"
            ],

            // 不允许对全局变量赋值,如 window = 'abc'
            "no-global-assign": ["error", {
                    // 定义例外
                    // "exceptions": ["Object"]
            }],
            "no-var": 0, //用let或const替代var
            "no-const-assign": 2, //不允许const重新赋值
            "no-class-assign": 2, //不允许对class重新赋值
            "no-debugger": 1, //debugger 调试代码未删除
            "no-console": 0, //console 未删除
            "no-constant-condition": 2, //常量作为条件
            "no-dupe-args": 2, //参数重复
            "no-dupe-keys": 2, //对象属性重复
            "no-duplicate-case": 2, //case重复
            "no-empty-character-class": 2, //正则无法匹配任何值
            "no-invalid-regexp": 2, //无效的正则
            "no-func-assign": 2, //函数被赋值
            "valid-typeof": 1, //无效的类型判断
            "no-unreachable": 2, //不可能执行到的代码
            "no-unexpected-multiline": 2, //行尾缺少分号可能导致一些意外情况
            "no-sparse-arrays": 1, //数组中多出逗号
            "no-shadow-restricted-names": 2, //关键词与命名冲突
            "no-undef": 1, //变量未定义
            "no-unused-vars": 1, //变量定义后未使用
            "no-cond-assign": 2, //条件语句中禁止赋值操作
            "no-native-reassign": 2, //禁止覆盖原生对象
            "no-mixed-spaces-and-tabs": 0,

            //代码风格优化 --------------------------------------
            "no-irregular-whitespace": 0,
            "no-else-return": 0, //在else代码块中return,else是多余的
            "no-multi-spaces": 0, //不允许多个空格

            //object直接量建议写法 : 后一个空格前面不留空格
            "key-spacing": [
                    0,
                    {
                            "beforeColon": false,
                            "afterColon": true
                    }
            ],

            "block-scoped-var": 1, //变量应在外部上下文中声明,不应在{}代码块中
            "consistent-return": 1, //函数返回值可能是不同类型
            "accessor-pairs": 1, //object getter/setter方法需要成对出现

            //换行调用对象方法  点操作符应写在行首
            "dot-location": [
                    1,
                    "property"
            ],
            "no-lone-blocks": 1, //多余的{}嵌套
            "no-labels": 1, //无用的标记
            "no-extend-native": 1, //禁止扩展原生对象
            "no-floating-decimal": 1, //浮点型需要写全 禁止.1 或 2.写法
            "no-loop-func": 1, //禁止在循环体中定义函数
            "no-new-func": 1, //禁止new Function(...) 写法
            "no-self-compare": 1, //不允与自己比较作为条件
            "no-sequences": 1, //禁止可能导致结果不明确的逗号操作符
            "no-throw-literal": 1, //禁止抛出一个直接量 应是Error对象

            //不允return时有赋值操作
            "no-return-assign": [
                    1,
                    "always"
            ],

            //不允许重复声明
            "no-redeclare": [
                    1,
                    {
                            "builtinGlobals": true
                    }
            ],

            //不执行的表达式
            "no-unused-expressions": [
                    0,
                    {
                            "allowShortCircuit": true,
                            "allowTernary": true
                    }
            ],
            "no-useless-call": 1, //无意义的函数call或apply
            "no-useless-concat": 1, //无意义的string concat
            "no-void": 1, //禁用void
            "no-with": 1, //禁用with
            "space-infix-ops": 0, //操作符前后空格

            //jsdoc
            "valid-jsdoc": [
                    0,
                    {
                            "requireParamDescription": true,
                            "requireReturnDescription": true
                    }
            ],

            //标记未写注释
            "no-warning-comments": [
                    1,
                    {
                            "terms": [
                                    "todo",
                                    "fixme",
                                    "any other term"
                            ],
                            "location": "anywhere"
                    }
            ],
            "curly": 0 //if、else、while、for代码块用{}包围
    }
};

配置ESLint的项目中需要设置好该项目的"package.json"文件,如果没有的话可以使用"npm init"命令来设置。

配置ESLint插件,打开VSCode文件->首选项->设置,从左侧系统设置中可以看到,ESLint 扩展默认已经启用,我们现在只需在右侧用户设置中添加配置来指定我们创建的“.eslintrc.js”配置文件路径即可启用自定义规则检测,ESLint 会查找并自动读取它们:

"eslint.options": { 
    "configFile": "D:/.eslintrc.json" 
},

如果报错"ESLint: Cannot find module 'babel-eslint'. "需要安装:“npm install -g babel-eslint”

参考:https://segmentfault.com/a/1190000009077086

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Easter79 Easter79
2年前
Vue 项目中 ESlint 配置
前言对于ESlint这一块一直存在一些疑问,今天看到一个文章内容挺好的,这里拿来了。一、eslint安装1、全局安装npmigeslint全局安装的好处是,在任何项目我们都可以使用eslint的全局命令进行代码规则操作,但是这对我们的意义并不大,后续会详细介绍;全局安装之后
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这