用 Biome 替代 ESLint 和 Prettier

簡介

ESLint 和 Prettier
ESLint:代碼質量檢查工具,確保代碼風格一致與無錯誤
Prettier:代碼格式化工具,自動美化代碼布局
所以:ESLint + Prettier == 能自動美化代碼、自動檢查代碼錯誤的工具

Biome
Biome:集代碼檢查、代碼美化于一體的”高性能“的工具
所以:Biome > ESLint + Prettier

對比

ESLint 和 Prettier 配置復雜,但生態成熟、對應資料多
Biome 配置相對簡單、性能好,但生態尚未成熟、對應資料少
截至2025年2月19日,Biome 最新版本為 1.9.4

官網

Biome 官網鏈接:https://biomejs.dev/

簡單教程

注:這里只是簡單演示,如果你的項目和下面不匹配,請前往官網查看詳細的文檔教程

  1. 在你的項目運行下面命令,安裝 biome
npm install --save-dev --save-exact @biomejs/biome
  1. 安裝 VS Code 插件
    Biome插件
  2. 在你的項目的根目錄下,找到配置文件 biome.json,根據你的需求修改文件內容即可(怎么修改?建議去官網查看配置屬性。而對于比較懶的朋友,可參考我的個人開發規范,基本上常用的配置都在這里了,復制粘貼到你項目修改即可。另外,下面配有它的注釋版,有看不懂的朋友,可以看看其注釋)

無注釋版

{"$schema": "https://biomejs.dev/schemas/1.9.4/schema.json","vcs": {"enabled": false,"clientKind": "git","useIgnoreFile": false},"files": {"ignore": ["dist/*", "node_modules/*", ".vscode/*"],"ignoreUnknown": true},"organizeImports": {"enabled": false},"formatter": {"enabled": true,"indentStyle": "space","indentWidth": 2,"lineWidth": 80,"lineEnding": "lf","bracketSpacing": true},"javascript": {"formatter": {"semicolons": "always","quoteStyle": "single","trailingCommas": "none","arrowParentheses": "always"}},"linter": {"enabled": true,"rules": {"style": {"noVar": "error","useBlockStatements": "error","useConst": "error","useFilenamingConvention": {"level": "error","options": {"strictCase": true,"requireAscii": true,"filenameCases": ["PascalCase"]}},"useNamingConvention": {"level": "error","options": {"strictCase": true,"requireAscii": true,"conventions": [{"selector": { "kind": "const", "scope": "global" },"formats": ["CONSTANT_CASE"]}]}}},"performance": {"noReExportAll": "warn"},"suspicious": {"noDoubleEquals": "error","noDuplicateAtImportRules": "error"},"complexity": {"noExcessiveCognitiveComplexity": "error"},"correctness": {"noUnusedImports": "warn"}}}
}

含注釋版

{"$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", // 指定 Biome 配置文件的 JSON Schema,用于驗證配置文件的結構和內容"vcs": {"enabled": false, // 禁用版本控制系統(VCS)集成"clientKind": "git", // 設置 VCS 客戶端類型為 Git"useIgnoreFile": false // 禁用使用 Git 忽略文件},"files": {"ignore": ["dist/*", "node_modules/*", ".vscode/*"], // 忽略指定的文件和文件夾"ignoreUnknown": true // 忽略未知文件類型},"organizeImports": {"enabled": false // 禁用自動導入排序功能},"formatter": {"enabled": true, // 啟用代碼格式化功能"indentStyle": "space", // 設置縮進樣式為空格"indentWidth": 2, // 設置縮進寬度為 2 個空格"lineWidth": 80, // 設置每行最大寬度為 80 個字符"lineEnding": "lf", // 設置行結束符為 LF(換行符)"bracketSpacing": true // 在對象字面量的大括號之間添加空格},"javascript": {"formatter": {"semicolons": "always", // 始終在語句末尾添加分號"quoteStyle": "single", // 使用單引號表示字符串"trailingCommas": "none", // 不添加尾隨逗號"arrowParentheses": "always" // 始終在箭頭函數的參數周圍添加括號}},"linter": {"enabled": true, // 啟用代碼檢查功能"rules": {"style": {"noVar": "error", // 禁止使用 var 聲明變量"useBlockStatements": "error", // 強制使用塊級語句(即:不能省略花括號,比如if只有一句)"useConst": "error", // 強制使用 const 聲明常量(針對代碼中只用了一次的變量)"useFilenamingConvention": {"level": "error", // 設置文件命名約定規則的診斷級別為錯誤"options": {"strictCase": true, // 強制嚴格的大小寫規則,true是禁止連續大寫,反之"requireAscii": true, // 強制文件名使用 ASCII 字符,比如:無法使用中文命名"filenameCases": ["PascalCase"] // 強制文件名使用 PascalCase 命名風格}},"useNamingConvention": {"level": "error", // 設置命名約定規則的診斷級別為錯誤"options": {"strictCase": true, // 強制嚴格的大小寫規則,true是禁止連續大寫,反之"requireAscii": true, // 強制使用 ASCII 字符,比如:無法使用中文命名"conventions": [{"selector": { "kind": "const", "scope": "global" }, // 對于 const,在全局范圍內(強制全局常量使用 CONSTANT_CASE 命名風格)"formats": ["CONSTANT_CASE"] // 強制全局常量使用 CONSTANT_CASE 命名風格}]}}},"performance": {"noReExportAll": "warn" // 禁止導出所有內容,降低資源消耗,比如 import *},"suspicious": {"noDoubleEquals": "error", // 禁止使用雙等號(==)進行比較,只能用三等號 (===),null除外"noDuplicateAtImportRules": "error" // 禁止在導入規則中出現重復的 import 語句},"complexity": {"noExcessiveCognitiveComplexity": "error" // 禁止過高的認知復雜度,比如嵌套超過15個if-else語句},"correctness": {"noUnusedImports": "warn" // 禁止存在未使用的導入,即:不能導入后不用}}}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/70184.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70184.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70184.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

6.3 DBMS的功能和特征

文章目錄 DBMS的6大功能DBMS的3個特征DBMS的分類 DBMS的6大功能 DBMS包含數據定義,數據庫操作(檢索、插入、修改、刪除),數據庫運行管理(保證多用戶環境下正常運行),數據組織、存儲、管理&…

力扣hot100——找到字符串中的所有字母異位詞

給定兩個字符串 s 和 p,找到 s 中所有 p 的 異位詞 的子串,返回這些子串的起始索引。不考慮答案輸出的順序。 解法思路: 1. // 判斷字符相等,其實就是給定一個定長的窗口去滑動查找子串,為了便于判斷將p 與窗口中的子…

前端插件使用xlsx-populate,花樣配置excel內容,根據坐添加標替換excel內容,修改顏色,合并單元格...。

需求要求:業務人員有個非常復雜得excel表格,各種表頭等,但是模板是固定得。當然也可以實現在excel上搞出各種表格,但是不如直接用已有模板替換其中要動態得內容方便,這里我們用到CSDN得 xlsx-populate 插件。 實列中我…

未來AI方向落地場景:小語言模型,super_private_agent

未來AI方向落地場景:小語言模型,super_private_agent 目錄 未來AI方向落地場景:小語言模型,super_private_agent小語言模型super - private - agent(注重隱私的智能代理)碳基生命和硅基生命交互界面面向agent的專用交互協議和數據接口從web平臺經濟到網絡平臺舉例說明社交…

Coze扣子新功能詳解

今晚(2025-01-24)扣子再次進行更新 主要更新內容: 搭建小程序和 H5 用戶界面時,支持使用音頻組件播放音頻內容 數據庫操作體驗提升 界面優化:對數據庫詳情界面進行了重新設計,并將工作流運行數據庫的測試數據位置從原工作流底…

匯能感知的光譜相機/模塊產品有哪些?

CM020A 分辨率:1600H1200V 光譜范圍:350~950nm 光譜分辨率:1nm 接口:USB2.0 幀率:16001200 (6幀) 輸出格式:Raw 8bit FOV:D73.5H58.8V44.1 相機尺寸:505055mm VM02S10 分辨率…

Ollama 本地GUI客戶端:為DeepSeek用戶量身定制的智能模型管理與交互工具

Ollama 本地GUI客戶端:為DeepSeek用戶量身定制的智能模型管理與交互工具 相關資源文件已經打包成EXE文件,可雙擊直接運行程序,且文章末尾已附上相關源碼,以供大家學習交流,博主主頁還有更多Python相關程序案例&#xf…

OpenMv識別色塊通過串口發給STM32

硬件連接 1、Openmv端 這里OpenMV端僅作為數據的發送端,所以只需要共地,以及OpenMV的TX(P4)與開發板的RX端連接即可。 2、STM32端 將開發板連接STM芯片RX端與轉串口TX端的跳帽取下,再將OpenMV的TX端(P4)與STM的RX連接。如果使用USB轉TTL則將TTL的RX端與STM的TX端連接…

以太網交換基礎(涵蓋二層轉發原理和MAC表的學習)

在當今的網絡世界中,以太網交換技術是局域網(LAN)的核心組成部分。無論是企業網絡、學校網絡還是家庭網絡,以太網交換機都扮演著至關重要的角色。本文將詳細介紹以太網交換的基礎知識,包括以太網協議、幀格式、MAC地址…

菜鳥之路Day15一一IO流(一)

菜鳥之路Day15一一IO流(一) 作者:blue 時間:2025.2.8 文章目錄 菜鳥之路Day15一一IO流(一)0.概述1.初識IO流1.1.什么是IO流?1.2.IO流的作用1.3.IO流的分類 2.IO流的體系結構3.字節輸出流的基本…

汽車零部件開發應該具備哪些編程思維?

目錄 1、功能安全思維 2、實時性與確定性思維 3、可靠性和冗余思維 4、硬件軟件協同思維 5、CAN總線通信思維 6、故障診斷和自診斷思維 7、功耗優化思維 8、軟件更新和版本管理思維 9、用戶體驗與安全性思維 汽車零部件開發中,嵌入式軟件在車輛系統中的作用…

idea拉取合并后的分支

文章目錄 遠程拉取代碼.更新本地庫拉取后本地庫就有了合并后的代碼 遠程拉取代碼.更新本地庫 拉取后本地庫就有了合并后的代碼

1-18 GIT設置公鑰

1-1 GIT如何設置公鑰 1.0 注冊賬號 這個應該都是會的,就不做介紹了 2.0 設置公鑰 PWD的作用是查看文件的路徑 ssh-keygen -t ed25519 -C "Gitee SSH Key" 讀取公鑰文件: cat ~/.ssh/id_ed25519.pub 3.0 測試 查看綁定的用戶名和郵箱&#xff1…

【MySQL】 常見數據類型

MySQL常見數據類型 1.整數類型2.浮點數類型3.定點數類型4.bit類型5.字符串類型 5.1char和varchar類型5.2日期類型和時間類型5.3enum和set類型 1.整數類型 整數類型默認都是有符號整數 類型名稱 字節數 類型說明 tinyint 1 帶符號的范圍-128127,無符號范圍…

DeepSeek 部署中的常見問題及解決方案

DeepSeek 作為一款智能語義搜索框架,其本地化部署在實際操作中可能因環境配置、權限管理、硬件資源等因素遇到多種問題。本文結合當前市面上的實踐經驗,整合了部署中的常見問題及解決方案,幫助用戶高效排查和優化部署流程。 一、權限不足問題…

《機器學習數學基礎》補充資料:求解線性方程組的克拉默法則

《機器學習數學基礎》中并沒有將解線性方程組作為重點,只是在第2章2.4.2節做了比較完整的概述。這是因為,如果用程序求解線性方程組,相對于高等數學教材中強調的手工求解,要簡單得多了。 本文是關于線性方程組的拓展,供…

Jenkins介紹

什么是Jenkins Jenkins 是一個開源的自動化服務器,主要用于持續集成和持續交付(CI/CD)。它幫助開發團隊自動化構建、測試和部署軟件,從而提高開發效率和軟件質量。 如果一個系統是前后端分離的開發模式,在集成階段會需…

module ‘cv2.dnn‘ has no attribute ‘DictValue‘解決辦法

module ‘cv2.dnn‘ has no attribute ‘DictValue‘解決辦法 pip install opencv-python4.7.0.72 -i https://pypi.tuna.tsinghua.edu.cn/simple 測試: python -c"import cv2"

【全棧】SprintBoot+vue3迷你商城-細節解析(2):分頁

【全棧】SprintBootvue3迷你商城-細節解析(2):分頁 往期的文章都在這里啦,大家有興趣可以看一下 后端部分: 【全棧】SprintBootvue3迷你商城(1) 【全棧】SprintBootvue3迷你商城(…

kubeadm拉起的k8s集群證書過期的做法集群已奔潰也可以解決

kubeadm拉起的k8s集群證書過期的做法 這個是很久之前遇到的了,今天有空(心血來潮)就都回憶回憶寫在這里為愛發光,部分內容來自arch先生(死黨)的幫助。有時候有很多部門提了建k8s的需求,有些是臨…