使用 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:
{
"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"
选择如何格式化散文,将其设置为 always
、never
或 preserve
,例如:
{
"fmt": {
"proseWrap": "always"
}
}
如果您以两个一开头,deno fmt
还可以格式化编号列表,例如:
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 倍!