自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

ESLint 配置入門,你學會了嗎?

開發(fā) 前端
ESLint 是一款檢查 JavaScript 程序是否符合特定的規(guī)則的工具。比如字符串用單引號還是雙引號,Tab 縮進用 2 個空格還是 4 個空格還是其他,這些都可以用 ESLint 來規(guī)定。

大家好,我是前端西瓜哥,今天帶大家了解 ESLint 的配置項。

ESLint 是一款檢查 JavaScript 程序是否符合特定的規(guī)則的工具。比如字符串用單引號還是雙引號,tab 縮進用 2 個空格還是 4 個空格還是其他,這些都可以用 ESLint 來規(guī)定。

安裝

你可以通過下面命令來安裝以及生成默認的 ESLint 配置

npm init @eslint/config

執(zhí)行后,它有一個命令行的交互,根據(jù)提問需要選擇即可。

然后你會得到一個 .eslintrc.json 或者 .eslintrc.js 或 .eslintrc.yaml 文件(根據(jù)你的選擇)。

我沒有使用一些流行的默認 eslint 配置包,選擇了自定義規(guī)則。我的 .eslintrc.json 文件是這樣的:

{
"env": {
"browser": true,
"es2021": true
},
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended"
],
"overrides": [
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module"
},
"plugins": [
"@typescript-eslint"
],
"rules": {
"indent": [
"error",
4
],
"linebreak-style": [
"error",
"unix"
],
"quotes": [
"error",
"single"
],
"semi": [
"error",
"always"
]
}
}

?除了有專門的 ESLintrc 文件,我們 還可以在 package.json 加配置,字段名為 "eslintConfig"。

此外,ESLint 還支持 配置注釋。如果一個文件的某行代碼或所有代碼的某個規(guī)則要做特殊處理,我們可以在文件上加上注釋。?

比如整個文件關(guān)閉 semi(分號)規(guī)則:

/* eslint-disable semi */

下一行關(guān)閉 semi(分號)規(guī)則:

// eslint-disable-next-line semi
const a = '前端西瓜哥'

檢驗和修復(fù)文件規(guī)則

可以通過下面命令來檢查一個文件是否符合規(guī)則:

npx eslint src/index.js
# 或者
yarn run eslint src

每次寫完代碼都要執(zhí)行命令的話,不免開發(fā)體驗差。

強烈建議在編輯器中裝上插件,它可以直接在代碼的位置上提示錯誤并提供信息。如果你使用的是 VSCode,可以安裝 ESlint 插件。

修復(fù)指定文件的規(guī)則,在原來命令的基礎(chǔ)上加上 --fix 即可。

npx eslint src/index.js --fix

VSCode 則可以通過智能提示的 Quick Fix 自動修復(fù)。

需要注意的是,并不是所有的規(guī)則錯誤都可以 auto fix。

像是雙引號變成單引號 ESLint 可以幫你 fix,但對于函數(shù)的內(nèi)容為空,你需要加上內(nèi)容的情況,ESLint 沒辦法幫你寫出來,它也不知道你想寫啥。

此外,還有存在多個可選修復(fù)方案的情況,你需要在編輯器的 quick fix 中選擇一種。

配置項 rules

下面我們看看 eslintrc 的一些配置用法。

rules 配置里可以指定一些具體的規(guī)則。比如

"indent": ["error", 4]

注釋配置寫法:

/* eslint indent: ["error", 4] */

表示我們希望縮進為 4 個空格。

數(shù)組的第一個元素是錯誤等級。分為

  1. off / 0:關(guān)閉規(guī)則;
  2. warn / 1:警告等級,配合其他工具時表現(xiàn)為編譯通過,但會出現(xiàn)警告,在 VSCode 使用插件后顯示為黃色波浪線;
  3. error / 2:錯誤等級,表現(xiàn)為編譯不通過(exit code 為 1),在 VSCode 使用插件后顯示為紅色波浪線。

第二個元素及以后則是具體的配置值。

indent 是 rules 的一種規(guī)則,具體還有其他什么規(guī)則你可以看 eslint 官方文檔:

https://eslint.org/docs/latest/rules/?。

配置項 plugins

plugins 可以給 ESLint 新增一些規(guī)則。比如 eslint-plugin-react 插件:

"plugins": [
"react"
],
"rules": {
// props 不能使用字面量布爾值
// 比如 disabled={true} 是不允許的,需要用 disabled
"react/jsx-boolean-value": [
"error",
"never"
]
}

但注意它只是聲明,而不會應(yīng)用這些規(guī)則,你需要在 rules 上應(yīng)用,或使用 extends。

配置項 extends

extends 是集成好的一套完整方案,里面會預(yù)先設(shè)好 plugins、rules 等配置。你可以認為它是另一個 eslintrc 文件。

"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended"
]

上面使用了 ESLint 自帶的 eslint:recommended,里面設(shè)置了一些默認 rule。源碼地址在這里:

https://github.com/eslint/eslint/blob/main/conf/eslint-recommended.js?。

每次開發(fā)一個新的項目,如果一個個配置 rule 未免繁瑣,通常我們會選擇一個比較流行的去 extends,然后再在上面修改。

當然你也可以自己開發(fā)一個。

配置項 env

設(shè)置腳本環(huán)境。比如

"env": {
"browser": true,
"es2021": true
},

注釋配置寫法:

/* eslint-env browser, es2021 */

env 可以指定多個環(huán)境。

env 對一些 rule 是有作用的,比如 no-undef,表示不能使用未定義的變量。但有些變量其實是腳本所在宿主環(huán)境提供的全局變量,比如瀏覽器的 window,nodejs 的 process。

提供了 env 后,ESLint 就能有一個環(huán)境變量的白名單,看到這些變量就跳過 no-undef 規(guī)則。

可選的環(huán)境值:

https://eslint.org/docs/latest/user-guide/configuring/language-options#specifying-environments?。

配置項 global

設(shè)置全局變量。

"globals": {
"var1": "writable",
"var2": "readonly",
"var3": "off",
}
  • writable:表示可修改。
  • readonly:表示只讀,不能修改。
  • off:關(guān)閉

配置注釋寫法:

/* global var1: writable, var2: readonly */

配置項 root

設(shè)置應(yīng)用配置文件的根目錄。

"root": true

對項目中的某個文件的 ESLint 應(yīng)用邏輯是,從它所在目錄往上遞歸,找到所有的 ESLintrc 文件,直到根目錄 /。

通常我們希望遞歸到項目根目錄就停止了,不要引入項目外的 ESLintrc。

這時候我們就可以用 “root” 進行標明,表示到這里就是根目錄了。

配置項 parserOptions

ESLint 默認使用 ES5 的語法來解析代碼。如果你的代碼 用了高版本的 ES,就要配置 parserOptions,指定轉(zhuǎn)換 AST 所基于的版本。

"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module",
"ecmaFeatures": {
"jsx": true
}
},

子配置項有:

  1. ecmaVersion:ES版本,可以是 3、5(默認)、6(或 2015)、7(或 2016)... "latest"(當前 ESLint 支持的最新版本)。
  2. sourceType:可以設(shè)置為 "script" (默認) 或 "module"(使用模塊化)。
  3. allowReserved:允許使用保留字來作為變量名(如果是 ES3)。
  4. ecmaFeatures:添加新的語言特性。它是一個對象,包括 jsx、impliedStrict(啟用全局的 "use strict;")、globalReturn(全局作用域可以 return,像 commonjs 模塊本質(zhì)是用函數(shù)實現(xiàn)的)。

配置項 parser

ESLint 默認的 parser 只支持 js,且僅支持最終的 ES 標準,不支持實驗性質(zhì)的特性。

有時候我們想用實驗性質(zhì)的 ES 特性,或是使用另一種語言,比如 TypeScript,那就要更換 parser 了。

對于實驗性質(zhì)特性,我們可以使用 babel:

"parser": "@babel/eslint-parser"

對于 TypeScript:

"parser": "@typescript-eslint/parser"

保存時自動格式化

這個需要借助編輯器的插件,在保存的時候調(diào)用 ESLint 的 fix API。

比如在 VSCode 中,我們只需要在 .vscode/settings.json 配置:

{
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
}
}

更多的用法可查閱插件的官方文檔:

https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint?。

.eslintignore

有些文件我們不希望做 eslint 檢驗,因為它們可能是通過腳本生成的文件。

我們可以在項目根目錄創(chuàng)建一個 .eslintignore 文件。

dist/*
lang/zh_ch.js

結(jié)尾

之后我會開一篇文章寫如何編寫自定義 ESLint 規(guī)則,敬請期待。

責任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2023-03-30 08:26:31

DNSTCPUDP

2023-03-31 08:16:39

CDN網(wǎng)絡(luò)數(shù)據(jù)

2022-11-02 07:37:07

WebAssembl瀏覽器服務(wù)器

2023-06-27 08:00:35

2025-01-02 10:02:44

2023-04-14 09:04:07

測試TDBF單元測試

2024-01-02 12:05:26

Java并發(fā)編程

2023-08-01 12:51:18

WebGPT機器學習模型

2023-03-10 22:08:20

2023-01-10 08:43:15

定義DDD架構(gòu)

2024-02-04 00:00:00

Effect數(shù)據(jù)組件

2023-07-26 13:11:21

ChatGPT平臺工具

2024-01-19 08:25:38

死鎖Java通信

2023-10-13 09:04:09

2024-03-01 08:13:45

Shell編程解釋器

2022-06-16 07:50:35

數(shù)據(jù)結(jié)構(gòu)鏈表

2022-12-06 07:53:33

MySQL索引B+樹

2023-07-30 22:29:51

BDDMockitoAssert測試

2023-10-06 14:49:21

SentinelHystrixtimeout

2024-02-02 11:03:11

React數(shù)據(jù)Ref
點贊
收藏

51CTO技術(shù)棧公眾號