Biome 1.7 发布,支持从 ESLint 和 Prettier 迁移

devtools/2024/9/22 6:57:35/

近日,Biome v1.7 正式发布!这个新版本提供了从 ESLint 和 Prettier 迁移的简单路径。它还引入了格式化程序和 linter 的实验性机器可读报告、新的 linter 规则和许多修复。

使用以下命令更新 Biome:

npm install --save-dev --save-exact @biomejs/biome@latest
npx @biomejs/biome migrate

从 ESLint 迁移

此版本引入了一个新的子命令 biome migrate eslint。此命令将读取您的 ESLint 配置并尝试将其设置移植到 Biome。

该子命令能够处理旧配置文件和平面配置文件。它支持 extends 遗留配置领域并加载共享和插件配置,该子命令也会迁移 .eslintignore

给出以下 ESLint 配置:

{"extends": ["plugin:unicorn/recommended"],"plugins": ["unicorn"],"ignore_patterns": ["dist/**"],"globals": {"Global1": "readonly"},"rules": {"eqeqeq": "error"},"overrides": [{"files": ["tests/**"],"rules": {"eqeqeq": "off"}}]
}

以及以下 Biome 配置:

{"linter": {"enabled": true,"rules": {"recommended": true}}
}

运行 biome migrate eslint --write 以将您的 ESLint 配置迁移到 Biome。该命令会覆盖您的初始 Biome 配置。

例如,它禁用 recommended 会产生以下 Biome 配置:

{"organizeImports": { "enabled": true },"linter": {"enabled": true,"rules": {"recommended": false,"complexity": {"noForEach": "error","noStaticOnlyClass": "error","noUselessSwitchCase": "error","useFlatMap": "error"},"style": {"noNegationElse": "off","useForOf": "error","useNodejsImportProtocol": "error","useNumberNamespace": "error"},"suspicious": {"noDoubleEquals": "error","noThenProperty": "error","useIsArray": "error"}}},"javascript": { "globals": ["Global1"] },"overrides": [{"include": ["tests/**"],"linter": { "rules": { "suspicious": { "noDoubleEquals": "off" } } }}]
}

该子命令需要 Node.js 加载并解析所有插件并 extends 在 ESLint 配置文件中配置。目前 biome migrate eslint 不支持用 YAML 编写的配置。

我们有一个专门的页面,列出了给定 ESLint 规则的等效 Biome 规则。我们处理一些 ESLint 插件,例如 TypeScript ESLint、ESLint JSX A11y、ESLint React 和 ESLint Unicorn。

有些规则与 ESLint 的对应规则相同,而其他规则则受到启发。默认情况下,Biome 不会迁移启发规则。您可以使用 CLI 标志 --include-inspired 来迁移它们。

从 Prettier 迁移

Biome v1.6 引入了子命令 biome migrate prettier

在 Biome v1.7 中,我们添加了对 Prettier 的 overrides 支持,并尝试将 glob 模式转换 .prettierignore 为 Biome 支持的 glob

在迁移过程中,Prettier 的重写被翻译为 Biome 的重写。考虑到以下 .prettierrc.json

{"useTabs": false,"singleQuote": true,"overrides": [{"files": ["*.json"],"options": { "tabWidth": 2 }}]
}

运行 biome migrate prettier --write 以将 Prettier 配置迁移到 Biome。这会产生以下 Biome 配置:

{"formatter": {"enabled": true,"formatWithErrors": false,"indentStyle": "space","indentWidth": 2,"lineEnding": "lf","lineWidth": 80,"attributePosition": "auto"},"organizeImports": { "enabled": true },"linter": { "enabled": true, "rules": { "recommended": true } },"javascript": {"formatter": {"jsxQuoteStyle": "double","quoteProperties": "asNeeded","trailingComma": "all","semicolons": "asNeeded","arrowParentheses": "always","bracketSpacing": true,"bracketSameLine": false,"quoteStyle": "single","attributePosition": "auto"}},"overrides": [{"include": ["*.json"],"formatter": {"indentWidth": 2}}]
}

该子命令需要 Node.js 来加载 JavaScript 配置,例如 .prettierrc.jsbiome migrate prettier 不支持以 JSON5、TOML 或 YAML 编写的配置。

可读的报告

Biome 现在能够输出 JSON 报告,详细说明命令发出的诊断信息。您可以在检查代码库时发出报告:

biome lint --reporter=json-pretty .

目前,我们支持两种报告格式:jsonjson-pretty

请注意,报告格式是实验性的,将来可能会发生变化。请尝试此功能,并告知我们是否需要在报告中添加任何信息。

检查 git 暂存文件

Biome v1.5 添加了 --changed 选项,用于格式化和检查已更改的 Git 跟踪文件。

今天我们推出了一个新选项 --staged,它允许您仅检查添加到 Git 索引的文件(暂存文件)。这对于检查要提交的文件是否已格式化和 linted 非常有用:

biome check --staged .

这对于编写您自己的预提交脚本非常方便。请注意,不会忽略已暂存文件上未暂存的更改。因此,我们仍然建议使用专用的预提交工具。

下一步进展

我们已经开始了 CSS 格式化程序和代码检查工作。面向插件系统的早期实施也正在进行中。我们的一些贡献者已经开始了 GraphQL 和 YAML 的初步工作。


http://www.ppmy.cn/devtools/7541.html

相关文章

K8s ingress-controller中nginx文件上传大小的限制

# 20、K8s ingress-controller中nginx文件上传大小的限制 问题:1.应用程序中上传文件文件出错,页面提示“您上传的文件太大了,请压缩图片后重试。” 2.通过F12 可以看到,后台提示 403错误,可以看到出错是由于nginx的限…

如何使用JSONB类型在PostgreSQL中存储和查询复杂的数据结构?

文章目录 解决方案1. 创建包含JSONB列的表2. 插入JSONB数据3. 查询JSONB数据4. 创建索引以优化查询性能 示例代码结论 在PostgreSQL中,JSONB是一种二进制格式的JSON数据类型,它允许你在数据库中存储和查询复杂的JSON数据结构。与普通的JSON类型相比&…

PDF被加密无法打印的解决办法

思路很清晰:先解密→再打印 分享四个工具,可以轻松解密PDF: ⭐i love pdf I LOVE PDF是一款免费的PDF网站,界面设计简洁,首页没有广告,但每个功能的操作界面是有广告的,不会影响使用。 部分功…

excel文件预览: luckyexcel+luckysheet

luckyexcel 使用 npm i luckyexcel --saveluckysheet 使用 luckysheet文档 克隆Luckysheet源码到本地 git clone https://github.com/dream-num/Luckysheet.git安装依赖 npm install npm install gulp -g 开发 npm run dev打包 npm run build本地引入 npm run build 后 …

CSS基础:position定位的5个类型详解!

你好,我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生,一枚程序媛,感谢关注。回复 “前端基础题”,可免费获得前端基础 100 题汇总,回复 “前端工具”,可获取 Web 开发工具合…

创新指南|节日期间提高销量的 10 个最佳技巧

许多网上购物者在感恩节前开始假日购物。假期是在线企业销售产品和增加销售额的最佳时机。根据万事达卡的数据,去年在线假日销售额增长了 10.6%,而店内销售额增长了 6.8%。此外,2023年美国消费者平均计划在假日旺季花费约1,530美元。在线企业…

阅读笔记15:The functional landscape of the human phosphoproteome

题目:The functional landscape of the human phosphoproteome 作者:David Ochoa, Andrew F. Jarnuczak, Cristina Viitez, Maja Gehre, Margaret Soucheray, Andr Mateus, Askar A. Kleefeldt, Anthony Hill, Luz Garcia-Alonso, Frank Stein, Nevan J. Krogan, Mikhail M. …

Verilog仿真跨模块调用内部信号的方法

在Verilog仿真时如果需要调用某子模块中的信号在本模块中使用可以使用层次化引用的方法,而不需要在rtl部分用端口引出来。 引用方式:当前例化模块名.子例化模块名.子子例化模块名.参数 将需要的信号引出。 注意是用例化模块名而不是用子模块名&#xff…