首页 > 其他分享 >eslint从入门到放弃(五)eslint配置之extends(共享配置)

eslint从入门到放弃(五)eslint配置之extends(共享配置)

时间:2024-11-20 17:48:03浏览次数:3  
标签:配置 js extends eslint 规则 standard config

上文说了eslint配置之规则,今天说下ESLint配置中的extends(共享配置),前文传送门,

eslint从入门到放弃(一)eslint入门

eslint从入门到放弃(二)esLint配置之globals

eslint从入门到放弃(三)ESLint配置之env(三)
eslint从入门到放弃(四)eslint配置之规则

大家好我是【小枫学幽默】,这是我eslint从入门到放弃系列教程的第五篇,欢迎关注后续更新。接下来步入正题:

ESLint配置之extends(共享配置)

ESLint extends (共享配置) 是个啥?这玩意儿有啥用?

在前文eslint从入门到放弃之eslint配置之规则(四)中我们讲过,项目中的.eslintrc(eslint配置文件)中的rules就是eslint配置中的规则(rule)的集合,就是来告诉eslint如何检查代码的;
单说官网的规则大概有308个,可往往我们面临以下问题

  • 1、我们项目中的代码风格虽然是千差万别的,总有一部分规则是一致的(比如 un-undef),这部分规则每个项目都去配置一遍,很花费时间
  • 2、一个大的规范化的团队,代码风格通常都是一样的,多个项目之间共享代码规则,通过代码拷贝的方式是很麻烦的
  • 3、当没有固定规范的时候,小团队是不是可以跟大厂看齐?能否引用大厂的规范?

所以eslint提供了extends(共享配置)来帮我们解决这个问题,extends就是来帮我们引入别人已经配置好的规则的,我们只需要在extends中引入别人配置好的规则,如果别人的规则在自己的项目中不合适,我们根据自己的需求覆盖对应规则即可,extends可以帮我们节省大量的时间。

extends 怎么用?

首先,我们新建一个demo目录,文件结构如下

demo
├── .eslintrc.js
├── package.json
└── rules.js

.eslintrc.js(eslint配置文件)内容如下

module.exports = {
    "extends": "standard",
    // "extends": "eslint-config-standard", 
    // 跟上面一样,只是换了个写法 当共享的配置文件命名遵循了```eslint-config-*```的命名规范时,可以省略```eslint-config-```
}

rules.js(我们要用eslint校验的文件)

a = 12
add(1, 2)

打开命令行,进入demo目录,安装我们extends的规则

# 这里可以去看eslint-config-standard,都包含哪些规则
# https://github.com/standard/eslint-config-standard/blob/master/src/index.ts
npm install eslint-config-standard --save-dev
# 不要问我为啥要装下面这个包,我看了eslint-config-standard的 package.json 
# 发现它依赖了下面这个包,
npm install eslint-plugin-import --save-dev

用eslint校验下rules.js

npx eslint rules.js -c .eslintrc.js
demo/rules.js
  1:1  error  'a' is not defined             no-undef
  2:1  error  'add' is not defined           no-undef

extends 可以使用多个共享配置吗?

当然可以!!

做如下修改即可 .eslintrc.js(eslint配置文件)内容如下

// 使用多个共享配置时,需要使用数组
// 使用前要先安装对应的包哦(npm i eslint-config-airbnb-base)
module.exports = {
    "extends": ["standard", "eslint-config-airbnb-base"],
}

extends 可以引用本地的共享配置吗?

当然可以!!

在根目录下创建一个custom-config.js文件,内容如下

module.exports = {
    "rules": {
        // 这里覆盖掉standard的no-undef规则
        "no-undef": "off",
    }
}

在 .eslintrc.js 引用这个文件

// 使用多个共享配置时,需要使用数组
// 使用前要先创建这个文件哦
module.exports = {
    "extends": ["standard", , "./custom-config.js"],
}

extends standard之后如果我不想用使用standard的某个规则怎么办?

只需要在.eslintrc.js中的rules中添加跟standard同名规则的设置项即可覆盖standard的规则;

例如standard下定义了'no-undef': 'error'报错,我就是任性,我就是不想让 eslint在发现我使用了未定义变量的时候告诉我,我可以通过以下配置禁用这个规则

做如下修改即可 .eslintrc.js(eslint配置文件)内容如下

module.exports = {
    "extends": "standard",
    "rules": {
        // 这里可以修改standard的规则
        "no-undef": "off",
    }
}

用eslint校验下rules.js

npx eslint rules.js -c .eslintrc.js
# 无任何输出,因为我关掉了```no-undef```这个规则
demo/rules.js

ESLint 共享配置使用文档

官方文档 >> 传送门

有哪些常用的共享配置

  • eslint:recommended:ESLint 内置的推荐规则,即 ESLint Rules 列表中打了钩的那些规则;
  • eslint:all:ESLint 内置的所有规则;
  • eslint-config-standard[7]:standard 的 JS 规范;
  • eslint-config-prettier[8]:关闭和 ESLint 中以及其他扩展中有冲突的规则;
  • eslint-config-airbnb-base:airbab 的 JS 规范;
  • eslint-config-alloy[9]:腾讯 AlloyTeam 前端团队出品,可以很好的针对你项目的技术栈进行配置选择,比如可以选 React、Vue(现已支持 Vue 3.0)、TypeScript 等;

extends 支持的配置类型可以是以下几种

  • eslint 开头的:是 ESLint 官方的扩展;
  • plugin 开头的:是插件类型扩展,比如 plugin:vue/essential;
  • eslint-config 开头的:来自 npm 包,使用时可以省略前缀 eslint-config-,比如上面的可以直接写成 standard;
  • @开头的:扩展和 eslint-config 一样,只是在 npm 包上面加了一层作用域 scope;
    一个执行配置文件的相对路径或绝对路径;

欢迎关注我的个人公众号「「小枫学幽默」」一起成长,一起分享生活!!

扫码关注我.png

标签:配置,js,extends,eslint,规则,standard,config
From: https://blog.csdn.net/piaolingfeixue260/article/details/143886397

相关文章

  • filebeat配置
    原始日志:Nov1910:10:3210.0.7.32date=2024-11-19,time=10:10:32.980,device_id=FE400FT9200213,log_id=0200024133,type=statistics,pri=information,session_id="4AJ2wt024131-4AJ2AWwv024131",client_name="",client_ip="10.0.1.9",clie......
  • 建筑设备一体化系统配置说明-产业园、医院、数据中心案例分析
    建筑设备一体化系统配置说明建筑设备一体化监控系统构成1、为了全面实现智慧,建筑的各项技术指标和使用功能要求,本项目设置建筑设备一依化监控系统,实现建筑的设备监控、电力监控、四明控制、剩余电流检测,用能计量、建筑环境检测、能效管理的功能。系统架构应以集中管理、分......
  • Nginx服务器配置---反向代理服务时proxy_pass的转发规则
    nginx是由俄罗斯开发的一款httpweb服务器,我们经常用这款服务器做负载均衡和反向代理。今天我们就来聊聊Nginx作为反向代理时,如何进行路由配置。假设你已经部署好Nginx了,我们进入Nginx安装目录,进入nginx.conf文件。找到http节点下的server节点,值是一个json。在json中有一个locat......
  • 联想thinkpad笔记本哪些配置可以安装win7_联想thinkpad笔记本装win7解析(支持新旧机型
    联想thinkpad笔记本哪些配置可以安装win7?联想ThinkPadL14在安装win7后usb键盘不能使用,并且bios中要关闭安全启动和开启CSM兼容模式,那么联想ThinkPadL14要怎么安装win7系统呢?下面小编就给大家介绍详细的联想ThinkPadL14装win7系统图文教程。      联想thinkpad笔......
  • SAP MIGO 收货/退货操作和科目配置,货物移动类型101/122
    文章目录前言一、收货二、查询收货凭证三、退货操作及会计凭证退货操作查看会计凭证三、收货凭证配置(一)BSX(存货记账)配置(二)WRX(货物和发票清算科目)配置(三)PRD(成本价格差异)配置(四)整体流程前言一、收货确保已经创建了采购订单,并且采购订单号码已知。这是进行收货操......
  • 8、tnsnames文件配置
    监听的配置文件2、tnsnames.ora文件tnsnames.ora文件:客户端的配置tnsnames.ora监听文件1、使用netca命令指定图像映射机器[oracle@db11gadmin]$exportDISPLAY=192.168.56.1:0.0netca命令[oracle@db11gadmin]$netca2、选择localnetservicenameconfiguration,点......
  • 发布nuget 如何配置项目文件
    编辑项目文件<PropertyGroup><TargetFramework>net6.0</TargetFramework><ImplicitUsings>enable</ImplicitUsings><Nullable>enable</Nullable><Title>TokenBlackList</Title>......
  • 单台服务器部署双节点Elasticsearch配置
    单台服务器部署双节点Elasticsearch配置目标在单台机器上部署两个Elasticsearch7.17.11节点,并使它们组成一个集群,需要为每个节点进行单独的配置。部署节点:node1:192.168.1.19:9200node2:192.168.1.19:9201具体步骤:1.安装下载并解压Elasticsearch7.17.11安......
  • Gradle 8 使用教程:Maven 仓库导入、依赖管理与 TOML 配置详解
    Gradle是Java和Android项目中广泛使用的构建工具,以灵活和高效著称。然而,随着Gradle版本的迭代,它的配置方式也发生了变化。例如,Gradle8开始对一些老旧的配置方式进行优化,推荐新的DSL和工具,使构建脚本更具一致性和可维护性。本文将带你深入了解:Gradle8中如何导......
  • 虚拟机配置上网
    1.虚拟机配置桥接模式(与宿主机同个网段) 2.修改网卡配置[root@node2network-scripts]#moreifcfg-enp0s3TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=static##静态,不采用dhcp获取,第一次可以使用dhcp获取,后面担心重启导致ip变化,可以采用固定的形式DEFROUT......