Linter

Deno 附带了 JavaScript 和 TypeScript 的内置 linter。

注意:linter 是一个新功能,仍然不稳定,因此需要 --unstable 选项

  1. # 检查当前目录树内所有 JS/TS 文件
  2. deno lint --unstable
  3. # 检查特定文件
  4. deno lint --unstable myfile1.ts myfile2.ts

可用规则

  • ban-ts-comment
  • ban-untagged-ignore
  • constructor-super
  • for-direction
  • getter-return
  • no-array-constructor
  • no-async-promise-executor
  • no-case-declarations
  • no-class-assign
  • no-compare-neg-zero
  • no-cond-assign
  • no-debugger
  • no-delete-var
  • no-dupe-args
  • no-dupe-keys
  • no-duplicate-case
  • no-empty-character-class
  • no-empty-interface
  • no-empty-pattern
  • no-empty
  • no-ex-assign
  • no-explicit-any
  • no-func-assign
  • no-misused-new
  • no-namespace
  • no-new-symbol
  • no-obj-call
  • no-octal
  • no-prototype-builtins
  • no-regex-spaces
  • no-setter-return
  • no-this-alias
  • no-this-before-super
  • no-unsafe-finally
  • no-unsafe-negation
  • no-with
  • prefer-as-const
  • prefer-namespace-keyword
  • require-yield
  • triple-slash-reference
  • use-isnan
  • valid-typeof

忽略指令

文件

要忽略整个文件,// deno-lint-ignore-file 指令应该置于文件顶部:

  1. // deno-lint-ignore-file
  2. function foo(): any {
  3. // ...
  4. }

必须在第一个语句或声明之前放置忽略指令:

  1. // Copyright 2020 the Deno authors. All rights reserved. MIT license.
  2. /**
  3. * Some JS doc
  4. **/
  5. // deno-lint-ignore-file
  6. import { bar } from "./bar.js";
  7. function foo(): any {
  8. // ...
  9. }

诊断 (Diagnostics)

要忽略某些诊断,// deno-lint-ignore 指令应该置于违规行之前。必须指定要忽略的规则名称:

  1. // deno-lint-ignore no-explicit-any
  2. function foo(): any {
  3. // ...
  4. }
  5. // deno-lint-ignore no-explicit-any explicit-function-return-type
  6. function bar(a: any) {
  7. // ...
  8. }

为了与 ESLint 兼容,deno lint 也支持 // eslint-ignore-next-line 指令。像 // deno-lint-ignore 一样,这也需要指定忽略的规则名称:

  1. // eslint-ignore-next-line no-empty
  2. while (true) {}
  3. // eslint-ignore-next-line @typescript-eslint/no-explicit-any
  4. function bar(a: any) {
  5. // ...
  6. }