Skip to main content
On this page

代码检查与格式化

在理想的世界中,您的代码始终是干净、一致且没有令人烦恼的错误。这就是 Deno 内置的代码检查和格式化工具的承诺。通过将这些特性直接整合到运行时中,Deno 消除了对外部依赖和复杂配置的需求。这些内置工具快速且高效,不仅节省了时间,还确保每一行代码都遵循最佳实践。

使用 deno fmtdeno lint,您可以专注于编写出色的代码,知道 Deno 会为您保驾护航。就像有一个警惕的助手在维护您的代码库,让您能够专注于真正重要的事情:构建出色的应用程序。

代码检查 Jump to heading

查看所有 lint 规则

代码检查是分析代码以寻找潜在错误、bug 和风格问题的过程。Deno 内置的代码检查工具 deno lint 支持来自 ESLint 的推荐规则集,为您的代码提供全面的反馈。这包括识别语法错误、强制编码规范以及突出可能导致 bug 的潜在问题。

要运行代码检查程序,请在终端中使用以下命令:

deno lint

默认情况下,deno lint 会分析当前目录及其子目录中的所有 TypeScript 和 JavaScript 文件。如果您想仅对特定文件或目录进行检查,可以将它们作为命令的参数传递。例如:

deno lint src/

此命令将对 src/ 目录中的所有文件进行代码检查。

代码检查工具可以在 deno.json 文件中进行配置。您可以指定自定义规则、插件和设置,以根据需要调整代码检查过程。

代码检查规则 Jump to heading

您可以在 规则列表 文档页面查看和搜索可用规则及其用法。

格式化 Jump to heading

格式化是自动调整代码布局以遵循一致风格的过程。Deno 内置的格式化器 deno fmt 使用强大的 dprint 引擎来确保您的代码始终干净、可读且一致。

要格式化代码,只需在终端中执行以下命令:

deno fmt

默认情况下,deno fmt 会格式化当前目录及其子目录中的所有 TypeScript 和 JavaScript 文件。如果您想仅对特定文件或目录进行格式化,可以将它们作为命令的参数传递。例如:

deno fmt src/

此命令将格式化 src/ 目录中的所有文件。

检查格式化 Jump to heading

deno fmt --check 命令用于验证您的代码是否按照 Deno 的默认格式化规则正确格式化。它不会修改文件,而是检查它们并报告任何格式问题。这对于集成到持续集成(CI)管道或提交前钩子中尤其有用,以确保项目中的代码一致性。

如果存在格式问题,deno fmt --check 会列出需要格式化的文件。如果所有文件都已正确格式化,它将简单地退出而不输出任何内容。

在 CI 中集成 Jump to heading

您可以将 deno fmt --check 添加到 CI 管道中,以自动检查格式问题。例如,在 GitHub Actions 工作流中:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: denoland/setup-deno@v2
        with:
          deno-version: v2.x
      - run: deno fmt --check

这确保任何代码更改在合并之前都符合项目的格式化标准。

在 VS Code 中集成 Jump to heading

要在 VS Code 中启用 Deno 作为格式化器,您需要将其设置为默认格式化工具,然后在项目根目录添加 .vscode/settings.json 文件,内容如下:

{
  "deno.enablePaths": ["./deno.json"]
}

如果您的 deno.json(c) 文件位于项目的子目录,请提供相应的相对路径。

可用选项 Jump to heading

bracePosition Jump to heading

定义代码块中大括号的位置

  • 默认值: sameLine
  • 可选值: maintainsameLinenextLinesameLineUnlessHanging

jsx.bracketPosition Jump to heading

定义 JSX 中括号的位置

  • 默认值: nextLine
  • 可选值: maintainsameLinenextLine

jsx.forceNewLinesSurroundingContent Jump to heading

强制在 JSX 元素内容周围使用换行符

  • 默认值: false
  • 可选值: truefalse

jsx.multiLineParens Jump to heading

当 JSX 元素或片段跨多行时,是否用括号包围最外层元素或片段

  • 默认值: prefer
  • 可选值: neverpreferalways

indentWidth Jump to heading

定义缩进宽度

  • 默认值: 2
  • 可选值: 数字

lineWidth Jump to heading

定义最大行宽度

  • 默认值: 80
  • 可选值: 数字

newLineKind Jump to heading

使用的换行符类型

  • 默认值: lf
  • 可选值: autocrlflfsystem

nextControlFlowPosition Jump to heading

定义后续控制流语句的位置

  • 默认值: sameLine
  • 可选值: sameLinenextLinemaintain

semiColons Jump to heading

是否偏好使用分号

  • 默认值: true
  • 可选值: truefalse

operatorPosition Jump to heading

多行表达式中运算符的位置

  • 默认值: sameLine
  • 可选值: sameLinenextLinemaintain

proseWrap Jump to heading

定义如何换行文本内容

  • 默认值: always
  • 可选值: alwaysneverpreserve

quoteProps Jump to heading

控制对象属性的引号使用

  • 默认值: asNeeded
  • 可选值: asNeededconsistentpreserve

singleBodyPosition Jump to heading

单语句代码块中主体的位置

  • 默认值: sameLineUnlessHanging
  • 可选值: sameLinenextLinemaintainsameLineUnlessHanging

singleQuote Jump to heading

是否使用单引号

  • 默认值: false
  • 可选值: truefalse

spaceAround Jump to heading

控制包围表达式的空格

  • 默认值: false
  • 可选值: truefalse

spaceSurroundingProperties Jump to heading

控制单行对象属性周围的空白

  • 默认值: true
  • 可选值: truefalse

trailingCommas Jump to heading

控制多行数组/对象中的尾随逗号

  • 默认值: always
  • 可选值: alwaysnever

typeLiteral.separatorKind Jump to heading

定义类型字面量的分隔符类型

  • 默认值: semiColon
  • 可选值: commasemiColon

unstable-component Jump to heading

启用格式化 Svelte、Vue、Astro 和 Angular 文件

unstable-sql Jump to heading

启用格式化 SQL 文件

useTabs Jump to heading

使用制表符代替空格进行缩进

  • 默认值: false
  • 可选值: truefalse

useBraces Jump to heading

是否为 if 语句、for 语句和 while 语句使用大括号

  • 默认值: whenNotSingleLine
  • 可选值: maintainwhenNotSingleLinealwayspreferNone

配置 Jump to heading

格式化器可以在 deno.json 文件中进行配置。您可以指定自定义设置,以根据您的需求调整格式化过程。

Deno 对其他 linter 和格式化工具的支持 Jump to heading

ESLint Jump to heading

要在您的 Deno 项目中使用 VSCode 的 ESLint 扩展,您的项目目录需要有一个 node_modules 文件夹,供 VSCode 扩展识别。

在您的 deno.json 中确保创建 node_modules 文件夹,以便编辑器能解析包:

{
  "nodeModulesDir": "auto"
}

(可选)运行 ESLint 命令下载它:

deno run -A npm:eslint --version
# 或者
deno run -A npm:eslint --init

创建一个 eslint.config.js

// eslint.config.js
import js from "@eslint/js";
import importPlugin from "eslint-plugin-import"; // 示例插件

export default [
  js.configs.recommended,
  {
    files: ["**/*.ts", "**/*.js"],
    languageOptions: { globals: { Deno: "readonly" } },
    plugins: { import: importPlugin },
    rules: {
      // 例如 "import/order": "warn"
    },
  },
];

运行 ESLint:

deno run -A npm:eslint .

您也可以在 deno.json 中添加任务来运行 ESLint:

{
  "tasks": { "eslint": "eslint . --ext .ts,.js" }
}

然后通过以下命令运行:

deno task eslint

Prettier Jump to heading

要在您的 Deno 项目中使用 Prettier,您的项目目录需要有一个 node_modules 文件夹,供 VSCode 扩展识别。

然后安装 VSCode 的 Prettier 扩展,并将其配置为您的默认格式化工具:

在 VSCode 中:

  1. 打开命令面板(使用 Cmd+Shift+P
  2. 选择 使用其他格式化工具格式化文档...
  3. 选择 配置默认格式化程序...
  4. 选择 Prettier - Code formatter

你找到了你需要的东西吗?

编辑此页面
隐私政策