代码检查与格式化
在一个理想的世界里,您的代码总是整洁、一致且没有烦人的错误。这正是 Deno 内置的 linting 和格式化工具所带来的承诺。通过将这些功能直接集成到运行时中,Deno 消除了项目中对外部依赖和复杂配置的需求。这些内置工具快速且高效,不仅节省时间,还确保每行代码都遵循最佳实践。
有了 deno fmt
和 deno lint
,您可以专注于编写出色的代码,因为 Deno 会为您提供支持。这就像拥有一个警惕的助手,能让您的代码库保持最佳状态,使您能够专注于真正重要的事情:构建出色的应用程序。
代码检查
探索所有 Lint 规则Linting 是分析代码以发现潜在错误、bug 和样式问题的过程。Deno 的内置 linter,deno lint
,支持 ESLint 推荐的规则集,以提供全面的代码反馈。这包括识别语法错误、强制执行编码约定以及突出显示可能导致 bug 的潜在问题。
要在终端中运行 linter,请使用以下命令
deno lint
默认情况下,deno lint
会分析当前目录及其子目录中的所有 TypeScript 和 JavaScript 文件。如果您想对特定文件或目录进行 linting,可以将其作为参数传递给命令。例如
deno lint src/
此命令将对 src/
目录中的所有文件进行 linting。
linter 可以在 deno.json
文件中配置。您可以指定自定义规则、插件和设置,以根据您的需求调整 linting 过程。
Linting 规则
您可以在 规则列表 文档页面上查看和搜索可用规则及其用法。
格式化
格式化是自动调整代码布局以遵循一致风格的过程。Deno 的内置格式化工具 deno fmt
使用强大的 dprint 引擎,确保您的代码始终整洁、可读且一致。
要格式化代码,只需在终端中执行以下命令
deno fmt
默认情况下,deno fmt
会格式化当前目录及其子目录中的所有 TypeScript 和 JavaScript 文件。如果您想格式化特定文件或目录,可以将其作为参数传递给命令。例如
deno fmt src/
此命令将格式化 src/
目录中的所有文件。
检查格式化
deno fmt --check
命令用于验证您的代码是否按照 Deno 的默认格式化规则正确格式化。它不会修改文件,而是检查它们并报告任何格式化问题。这对于集成到持续集成 (CI) 管道或预提交钩子中特别有用,以确保整个项目中的代码一致性。
如果存在格式化问题,deno fmt --check
将列出需要格式化的文件。如果所有文件都已正确格式化,它将直接退出,不输出任何内容。
CI 集成
您可以将 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
这确保任何代码更改在合并之前都符合项目的格式标准。
可用选项
bracePosition (花括号位置)
定义代码块的花括号位置
- 默认值:
sameLine
- 可选值:
maintain
,sameLine
,nextLine
,sameLineUnlessHanging
jsx.bracketPosition (JSX 括号位置)
定义 JSX 的括号位置
- 默认值:
nextLine
- 可选值:
maintain
,sameLine
,nextLine
jsx.forceNewLinesSurroundingContent (强制 JSX 内容换行)
强制 JSX 元素内容周围换行
- 默认值:
false
- 可选值:
true
,false
jsx.multiLineParens (多行 JSX 元素括号)
当最顶层 JSX 元素或片段跨越多行时,用括号将其包围
- 默认值:
prefer
- 可选值:
never
,prefer
,always
indentWidth (缩进宽度)
定义缩进宽度
- 默认值:
2
- 可选值:
number
lineWidth (行宽)
定义最大行宽
- 默认值:
80
- 可选值:
number
newLineKind (换行符类型)
要使用的换行符
- 默认值:
lf
- 可选值:
auto
,crlf
,lf
,system
nextControlFlowPosition (下一个控制流位置)
定义下一个控制流的位置
- 默认值:
sameLine
- 可选值:
sameLine
,nextLine
,maintain
semiColons (分号)
是否优先使用分号。
- 默认值:
true
- 可选值:
true
,false
operatorPosition (操作符位置)
跨越多行的表达式中操作符的放置位置
- 默认值:
sameLine
- 可选值:
sameLine
,nextLine
,maintain
proseWrap (散文包裹)
定义散文如何换行
- 默认值:
always
- 可选值:
always
,never
,preserve
quoteProps (属性引用)
控制对象属性的引用方式
- 默认值:
asNeeded
- 可选值:
asNeeded
,consistent
,preserve
singleBodyPosition (单体位置)
单体块中主体的位置
- 默认值:
sameLineUnlessHanging
- 可选值:
sameLine
,nextLine
,maintain
,sameLineUnlessHanging
singleQuote (单引号)
使用单引号
- 默认值:
false
- 可选值:
true
,false
spaceAround (周围空格)
控制封闭表达式周围的间距
- 默认值:
false
- 可选值:
true
,false
spaceSurroundingProperties (属性周围空格)
控制单行类对象节点周围的间距
- 默认值:
true
- 可选值:
true
,false
trailingCommas (尾随逗号)
控制多行数组/对象中的尾随逗号
- 默认值:
always
- 可选值:
always
,never
typeLiteral.separatorKind (类型字面量分隔符类型)
定义类型字面量的分隔符类型
- 默认值:
semiColon
- 可选值:
comma
,semiColon
unstable-component (不稳定组件)
启用 Svelte, Vue, Astro 和 Angular 文件的格式化
unstable-sql (不稳定 SQL)
启用 SQL 文件的格式化
useTabs (使用制表符)
使用制表符代替空格进行缩进
- 默认值:
false
- 可选值:
true
,false
useBraces (使用花括号)
是否在 if 语句、for 语句和 while 语句中使用花括号
- 默认值:
whenNotSingleLine
- 可选值:
maintain
,whenNotSingleLine
,always
, preferNone
配置
格式化工具可以在 deno.json
文件中配置。您可以指定自定义设置,以根据您的需求调整格式化过程。