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


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

    使用以下命令更新 Biome:

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

    从 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"
          }
        }
      ]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    以及以下 Biome 配置:

    {
      "linter": {
        "enabled": true,
        "rules": {
          "recommended": true
        }
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    运行 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" } } }
        }
      ]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    该子命令需要 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 }
          }
      ]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    运行 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
          }
        }
      ]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

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

    可读的报告

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

    biome lint --reporter=json-pretty .
    
    • 1

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

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

    检查 git 暂存文件

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

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

    biome check --staged .
    
    • 1

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

    下一步进展

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

  • 相关阅读:
    C# 正确实现IDisposable 释放非托管资源
    AI视频模型已成为科技领域的新热点
    10 个你必须要知道的重要JavaScript 数组方法
    k8s-13 存储之secret
    Golang 语法入门
    《存储IO路径》-进程、线程和任务的区别
    生物信息学 | 借助 AI 更高效地开启研究
    APUE 第4章: cp命令实现,同时去除文件中的空洞
    【python】(七)python内置装饰器: @classmethod和@staticmethod
    RexNet片段记录
  • 原文地址:https://blog.csdn.net/ikxin/article/details/137912082