deno.com
本页内容

使用 Deno fmt 格式化

视频描述 跳转到标题

Deno 内置格式化工具 deno fmt 的技巧和窍门快速概览。

大家好,我是来自 Deno 的 Andy,又到了 Deno 工具链系列节目,我们将更深入地探讨 Deno 的子命令。

今天我们将了解 deno fmt,它是我们内置的格式化程序,可自定义、高性能且足够灵活,可适应任何工作流程。让我们深入了解。

什么是 deno fmt跳转到标题

deno fmt 将格式化以下文件扩展名:

  • .js
  • .jsx
  • .ts
  • .tsx
  • .json
  • .jsonc
  • .md
  • .markdown

使用 deno fmt 最简单的方法是在命令行中运行它

deno fmt

您甚至可以通过管道输入字符串或文件

echo ' console.log(    5  );' | deno fmt -
## console.log(5);

您还可以使用 --check 标志来检查您的代码是否已通过 deno fmt 格式化。如果未格式化,它将返回一个非零退出代码

echo ' console.log(    5  );' | deno fmt --check -
## Not formatted stdin

这在 CI 中很有用,您可以在 CI 中检查代码是否已正确格式化。

编辑器集成 跳转到标题

deno fmt 也可以在您的编辑器中工作,例如 VS Code。将 deno fmt 设置为您的编辑器设置中的默认格式化程序,例如对于 VS Code:

.vscode/settings.json
{
  "editor.defaultFormatter": "denoland.vscode-deno",
  "editor.formatOnSave": true
}

您还可以将保存时格式化设置为 true

多种格式化方式 跳转到标题

在某些情况下,有多种格式化方式,Deno 允许您决定如何格式化。例如,一个对象可以水平或垂直格式化,这取决于您放置第一个项目的位置。例如:

const foo = { bar: "baz", qux: "quux" };

// or

const foo = {
  bar: "baz",
  qux: "quux",
};

数组也是如此。您可以水平或垂直格式化它,具体取决于您放置第一个项目的位置。例如:

const foo = ["bar", "baz", "qux"];

// or

const foo = [
  "bar",
  "baz",
  "qux",
];

移除转义引号 跳转到标题

deno fmt 还可以减少字符串中的转义字符。例如,如果您的字符串中包含转义引号,deno fmt 将会移除它们

console.log("hello \"world\"");

将被格式化为

console.log('hello "world"');

忽略行或文件 跳转到标题

如果您希望 deno fmt 跳过一行或一个文件怎么办?您可以使用 //deno-fmt-ignore 注释来告诉 deno fmt 跳过下一行,例如:

console.log("This   line    will  be  formatted");

// deno-fmt-ignore
console.log("This   line  will  not be    formatted");

要告诉 deno fmt 跳过一个文件,您可以使用文件顶部的 // deno-fmt-ignore-file 注释来忽略。或者您可以在 deno.json 配置文件中的 fmt 字段下使用。

{
  "fmt": {
    "exclude": ["main.ts", "*.json"]
  }
}

格式化 Markdown 跳转到标题

deno fmt 也可以在 Markdown 文件上工作。您可以使用选项 "proseWrap" 选择如何格式化散文,将其设置为 alwaysneverpreserve,例如:

{
  "fmt": {
    "proseWrap": "always"
  }
}

如果您以两个一开头,deno fmt 还可以格式化编号列表,例如:

list.md
1. First
1. Second
1. Third
1. Fourth
1. Fifth

格式化程序会自动将列表格式化为全部为一,但当您渲染它时,它将正确显示编号列表!

如果这看起来很奇怪,您也可以输入 1 然后 2,然后运行 deno fmt,它会为您正确编号列表的其余部分。

deno fmt 还将格式化 Markdown 中的 JavaScript 和 TypeScript 代码块。它甚至可以格式化 Markdown 中的 Markdown!

格式化程序选项 跳转到标题

让我们看看 deno fmt 中所有可用的选项。请注意,所有这些选项在 CLI 中也都有对应的标志。

{
  "fmt": {
    "useTabs": true,
    "lineWidth": 80,
    "indentWidth": 2,
    "semiColon": false,
    "singleQuote": true,
    "proseWrap": "always",
    "exclude": ["**/logs.json"]
  }
}
  • --use-tabs
  • --line-width <line-width>
  • --indent-width <indent-width>
  • --no-semicolons
  • --single-quote
  • --prose-wrap <prose-wrap>
  • --ignore=<ignore>

deno fmt 的性能 跳转到标题

deno fmt 非常快,尤其是在后续运行中,这得益于默认启用的缓存。这是我们对 Deno 标准库进行的首次运行。让我们再运行一次!系统时间显示第二次运行速度提高了三分之一。如果我们更新一个文件并再次运行,它仍然很快,因为 deno fmt 只检查更改的文件。让我们将其与 Prettier(一个流行的 Node 格式化工具)进行比较,我们将在启用缓存标志的情况下运行 Prettier。即使是第二次运行,deno fmt 也要快近 20 倍!

示例页面和我们的 YouTube 频道上查找更多视频。

您找到所需内容了吗?

隐私政策