当前位置: 首页 > article >正文

用 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" // 禁止存在未使用的导入,即:不能导入后不用}}}
}

相关文章:

用 Biome 替代 ESLint 和 Prettier

简介 ESLint 和 Prettier ESLint:代码质量检查工具,确保代码风格一致与无错误 Prettier:代码格式化工具,自动美化代码布局 所以:ESLint Prettier 能自动美化代码、自动检查代码错误的工具 Biome Biome:…...

【后端】k8s

1. 命令 1.1 获取service服务 获取集群内所有命名空间的service服务 sudo kubectl get service --all-namespaces 获取集群内指定命名空间的service服务 sudo kubectl get service -n命名空间 当权限限制到一个命名空间时,只能使用下面这个 sudo kubectl -n 命名空间 get se…...

golang深度学习-基础篇

基础数据结构及类型 字符型-string string 是Go标准库 buildin 内置的一个基础数据类型。string是由8比特字节的集合,通常不一定是UTF-8编码的文本。string可以为空(长度为0),但不会是nil。 string is the set of all strings of 8-bit bytes, conventionally but not nec…...

前端笔试面试资源汇总

好的,我现在需要帮助用户找到热门实用的前端笔试面试贴。首先,回顾之前的对话,用户已经询问了常见的前端算法题目,现在他们想要更广泛的资源,可能包括面试题、面经、学习资料等。用户可能正在准备前端面试,…...

win11安装wsl报错:无法解析服务器的名称或地址(启用wsl2)

1. 启用wsl报错如下 # 查看可安装的 wsl --install wsl --list --online此原因是因为没有开启DNS的原因,所以需要我们手动开启DNS。 2. 按照如下配置即可 Google的DNS(8.8.8.8和8.8.4.4) 全国通用DNS地址 (114.114.114.114) 3. 运行以下命令来重启 WSL…...

【Day44 LeetCode】图论问题 Ⅱ

一、图论问题 Ⅱ 1、岛屿的最大面积 这题和上一篇博客求岛屿数量如出一辙&#xff0c;都是要找出所有岛屿&#xff0c;深度优先搜索代码如下&#xff1a; # include<iostream> # include<vector>using namespace std;int dfs(vector<vector<int>> …...

技术总结 | MySQL面试知识点

存储引擎 Mysql 中的存储引擎 查询存储引擎的命令 show engines; Archive 只支持 insert 与select操作, 不支持索引 不支持事务 适用于存储需要长期保存,但是很少访问的数据,例如 历史日志 BlackHole 不存储数据,但是会记录写入操作 适用于性能测试 语言验证等情况 MyISAM…...

frameworks 之 Activity添加View

frameworks 之 Activity添加View 1 LaunchActivityItem1.1 Activity 创建1.2 PhoneWindow 创建1.3 DecorView 创建 2 ResumeActivityItem 讲解 Activity加载View的时机和流程 涉及到的类如下 frameworks/base/core/java/android/app/Activity.javaframeworks/base/services/cor…...

Linux下Ollama下载安装速度过慢的解决方法

问题描述&#xff1a;在Linux下使用默认安装指令安装Ollama&#xff0c;下载安装速度过慢&#xff0c;进度条进度缓慢&#xff0c;一直处于Downloading Linux amd64 bundle中&#xff0c;具体如下图所示&#xff1a; 其中&#xff0c;默认的Ollama Linux端安装指令如下&#xf…...

【小白学HTML5】一文讲清常用单位(px、em、rem、%、vw、vh)

html5中&#xff0c;常用的单位有px、em、rem、%、vw、vh&#xff08;不常用&#xff09;、cm、m等&#xff0c;这里主要讲解px、em、rem、%、vw。 学习了解&#xff1a;主流浏览器默认的字号&#xff1a;font-size:16px&#xff0c;无论用什么单位&#xff0c;浏览器最终计算…...

用自定义注解实现Excel数据导入中的枚举值校验

使用自定义注解实现Excel数据导入中的枚举值校验 在实际开发中&#xff0c;我们经常需要从Excel文件中导入数据&#xff0c;并且这些数据需要符合一定的规则&#xff0c;比如某些字段的值必须是预定义的枚举值。本文将介绍如何使用自定义注解来实现这一功能&#xff0c;以提高…...

关于redis的主从复制(下)

目录 全量复制 关于replid和runid 部分复制 补充问题 实时复制 psync可以从主节点获取全量数据&#xff0c;也可以获取一部分数据。主要就是看offset的进度&#xff0c;如果offset写作-1&#xff0c;就是获取全量数据。offset写具体的正整数&#xff0c;则是从当前偏移量位…...

uniapp uni.request重复请求处理

类似这种切换tab时&#xff0c;如果操作很快并且网络不太好&#xff0c;就出现数据错乱&#xff0c;在网上查了一圈&#xff0c;有一个使用uview拦截处理的&#xff0c;但是原生uni.requse没有找到详细的解决办法&#xff0c;就查到使用 abort 方法&#xff0c;我自己封装了一个…...

【大模型】DeepSeek:AI浪潮中的破局者

【大模型】DeepSeek&#xff1a;AI浪潮中的破局者 引言&#xff1a;AI 新时代的弄潮儿DeepSeek&#xff1a;横空出世展锋芒&#xff08;一&#xff09;诞生背景与发展历程&#xff08;二&#xff09;全球影响力初显 探秘 DeepSeek 的技术内核&#xff08;一&#xff09;独特的模…...

SOME/IP--协议英文原文讲解8

前言 SOME/IP协议越来越多的用于汽车电子行业中&#xff0c;关于协议详细完全的中文资料却没有&#xff0c;所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块&#xff1a; 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 4.2 Speci…...

用PyInstaller构建动态脚本执行器:嵌入式Python解释器与模块打包 - 简明教程

技术场景&#xff1a; 需分发的Python工具要求终端用户可动态修改执行逻辑将Python环境与指定库&#xff08;如NumPy/Pandas&#xff09;嵌入可执行文件实现"一次打包&#xff0c;动态扩展"的轻量化解决方案。 ▌ 架构设计原理 1. 双模运行时识别 # 核心判断逻辑…...

在做题中学习(89):螺旋矩阵

解法&#xff1a;模拟 思路&#xff1a;创建ret数组&#xff0c;用变量标记原矩阵的行数和列数&#xff0c;遍历一个元素就push_back进ret数组&#xff0c;每次遍历完一行或一列&#xff0c;相应行/列数--&#xff0c;进行顺时针螺旋遍历到为0即可。 细节&#xff1a;要有边界…...

从零搭建微服务项目Base(第5章——SpringBoot项目LogBack日志配置+Feign使用)

前言&#xff1a; 本章主要在原有项目上添加了日志配置&#xff0c;对SpringBoot默认的logback的配置进行了自定义修改&#xff0c;并详细阐述了xml文件配置要点&#xff08;只对日志配置感兴趣的小伙伴可选择直接跳到第三节&#xff09;&#xff0c;并使用Feign代替原有RestT…...

数据结构《图》

数据结构《图论》 图的性质 一、无向图&#xff08;Undirected Graph&#xff09; 定义 由一组顶点&#xff08;Vertex&#xff09;和一组无向边&#xff08;Edge&#xff09;构成。 每条无向边用一条无方向的线段连接两个顶点&#xff0c;记为 ( (u, v) )&#xff0c;其中…...

【数据分析】通过个体和遗址层面的遗传相关性网络分析

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍原理应用场景加载R包数据下载函数个体层面的遗传相关性网络分析导入数据数据预处理构建遗传相关性的个体网络对个体网络Nij进行可视化评估和选择最佳模型评估和选择最佳模型最佳模型…...

在 macOS 的 ARM 架构上按住 Command (⌘) + Shift + .(点)。这将暂时显示隐藏文件和文件夹。

在 macOS 的 ARM 架构&#xff08;如 M1/M2 系列的 Mac&#xff09;上&#xff0c;设置 Finder&#xff08;访达&#xff09;来显示隐藏文件夹的步骤如下&#xff1a; 使用快捷键临时显示隐藏文件&#xff1a; 在Finder中按住 Command (⌘) Shift .&#xff08;点&#xff…...

【产品经理】需求分析方法论+实践

阐述了需求分析的基本认知&#xff0c;包括需求分析的定义、原则和内容。接着&#xff0c;文章详细介绍了需求分析的十个步骤&#xff0c;从收集需求到结果评审&#xff0c;为产品经理提供了清晰的操作指南。 作为产品经理&#xff0c;需求分析是一个最基本的工作&#xff0c;但…...

Windows平台的小工具,功能实用!

今天给大家分享一款超实用的Windows平台监控工具&#xff0c;堪称“桌面小管家”&#xff0c;能帮你轻松掌握电脑的各种运行状态&#xff0c;比如网速、下载速度、内存和CPU占用率等常用参数&#xff0c;让你的电脑运行情况一目了然。 TrafficMonitor 网速监控悬浮窗软件 这款…...

意图识别概述

在当今的人工智能领域&#xff0c;意图识别技术是自然语言处理&#xff08;NLP&#xff09;中的一个重要分支&#xff0c;它使得机器能够理解人类语言背后的目的或意图。对于鸿蒙操作系统而言&#xff0c;掌握意图识别技术可以极大地提升用户体验&#xff0c;使设备能更好地响应…...

54. c++类型转换

c是强类型语言&#xff0c;它有自己的类型系统&#xff0c;隐式类型转换是在类型转换时&#xff0c;自动转换且数据不丢失&#xff0c;显示类型转换是指定转换类型&#xff1b;在c风格的类型转换中 &#xff0c;如下代码进行转换 #include <iostream>int main(int argc,…...

SAP-工单技术性关闭操作手册

文章目录 单个工单批量处理TECO和CLSD标识的区别 单个工单 事务代码CO02&#xff0c;输入工单号后回车 功能-》限制处理-》技术性完成 工单状态更改 撤销TECO操作 CO02输入工单号&#xff0c;功能-》限制处理-》撤销技术性完成 批量处理 事务代码COHV&#xff0c;点击生…...

Aseprite绘画流程案例(1)——画相机图标

原图&#xff1a; 步骤一&#xff1a;打开需要参照的图标 步骤二&#xff1a;将参照的图片拖放到右边&#xff0c;作为参考 步骤三&#xff1a;新建24x24的画布&#xff0c;背景为白色的画布 步骤四&#xff1a;点击菜单栏——视图——显示——像素网格&#xff08;如果画布已经…...

RESTful 的特点与普通 Web API 的区别

RESTful 是一种设计风格&#xff0c;而不仅仅是普通的 Web API。它遵循一些特定的原则和约束&#xff0c;使得 API 更加简洁、可扩展和易于理解。以下是 RESTful 的特点&#xff0c;以及与普通 Web API 的区别&#xff1a; RESTful 的特点 1. 资源导向 RESTful API 的核心是资…...

安装海康威视相机SDK后,catkin_make其他项目时,出现“libusb_set_option”错误的解决方法

硬件&#xff1a;雷神MIX G139H047LD 工控机 系统&#xff1a;ubuntu20.04 之前运行某项目时&#xff0c;处于正常状态。后来由于要使用海康威视工业相机&#xff08;型号&#xff1a;MV-CA013-21UC&#xff09;&#xff0c;便下载了并安装了该相机的SDK&#xff0c;之后运行…...

云计算架构学习之Ansible-playbook实战、Ansible-流程控制、Ansible-字典循环-roles角色

一、Ansible-playbook实战 1.Ansible-playbook安装软件 bash #编写yml [rootansible ansible]# cat wget.yml - hosts: backup tasks: - name: Install wget yum: name: wget state: present #检查playbook的语法 [rootansible ansible]…...