此页面内容来自 JSHint 项目仓库。如果您发现错误,请 提交问题 或(更佳)提交拉取请求

命令行界面

JSHint CLI 可以通过 npm 安装(有关说明,请参阅 安装页面)。

内容:指定输入 · 指定 Lint 选项 · 特殊选项 · 忽略文件 · 选项

指定输入

jshint 可执行文件接受文件系统路径作为命令行参数。如果提供的路径描述了一个文件,则可执行文件将读取该文件并检查其中包含的 JavaScript 代码。

$ jshint myfile.js
myfile.js: line 10, col 39, Octal literals are not allowed in strict mode.

1 error

如果提供的路径描述了一个文件系统目录,则 JSHint 将递归遍历该目录和任何子目录,读取所有 JavaScript 文件并检查其内容。

$ tree a-directory/
a-directory/
├── file-1.js
└── nested
    └── file-2.js

1 directory, 2 files

$ jshint a-directory/
a-directory/file-1.js: line 3, col 1, 'with' is not allowed in strict mode.

a-directory/nested/file-2.js: line 3, col 3, Unreachable 'void' after 'return'.

2 errors

如果文件路径为短横线 (-),则 JSHint 将从标准输入读取。

指定 Lint 选项

jshint 可执行文件能够应用在外部 JSON 格式文件指定的 Lint 选项。这样的文件可能如下所示

{
  "curly": true,
  "eqeqeq": true,
  "nocomma": true
}

jshint 将在多个位置查找此配置,并在第一次匹配时停止

  1. 使用 --config 选项 指定的位置
  2. 当前目录或当前目录的任何父目录中名为 package.json 的文件(配置应声明为该文件 JSON 值的 jshintConfig 属性)
  3. 当前目录或当前目录的任何父目录中名为 .jshintrc 的文件
  4. 当前用户“主目录”(如果已定义)中名为 .jshintrc 的文件

如果此搜索没有结果,则 jshint 将检查输入代码,就像没有启用任何 Lint 规则一样。

除了 其他上下文中可用的选项 之外,命令行界面还提供了一些 特殊选项

特殊选项

以下选项与文件系统相关,并且仅在配置文件中可用(即,不在内联指令或 API 中可用)

extends

使用另一个配置文件作为“基础”。此选项的值应为另一个配置文件的文件路径,并且该路径应相对于当前文件。

例如,您可以在项目的顶层目录中定义一个 .jshintrc 文件(例如,./.jshintrc)来指定您希望在整个项目中使用的 Lint 选项

{
  "undef": true,
  "unused": true
}

您可能希望将此配置重新用于项目的自动化测试,但也要 允许特定于测试环境的全局变量。在这种情况下,您可以在其测试目录中创建一个新文件(例如,./test/.jshintrc),并包含以下配置

{
  "extends": "../.jshintrc",
  "globals": {
    "test": false,
    "assert": false
  }
}

overrides

指定仅应应用于与给定路径模式匹配的文件的选项。

以下配置文件 禁止变量遮蔽 所有文件,并且 仅允许那些以 -test.js 结尾的文件将表达式用作语句

{
  "shadow": false,
  "overrides": {
    "lib/*-test.js": {
      "expr": true
    }
  }
}

忽略文件

jshint 可以配置为根据其在文件系统中的位置忽略文件。您可以创建一个专用的“忽略”文件,以列出任何数量的文件名、文件路径或不应检查的文件路径模式。路径模式将使用 minimatch npm 模块 进行解释,该模块本身基于 Unix 文件名匹配语法 fnmatch

build/
src/**/tmp.js

jshint 将在多个位置查找此配置,并在第一次匹配时停止

  1. 使用 --exclude-path 选项 指定的位置
  2. 当前目录或当前目录的任何父目录中名为 .jshintignore 的文件

如果此搜索没有结果,则 jshint 不会忽略任何文件。

选项

--config

显式设置 jshint 应从中加载 Lint 选项的文件系统上的位置。

$ jshint --config ../path/to/my/config.json

--reporter

允许您通过用自己的实现替换其默认输出函数来修改 JSHint 的输出。

$ jshint --reporter=myreporter.js myfile.js

此选项还支持两个预定义的报告程序:jslint,使输出与 JSLint 兼容,以及 checkstyle,使输出与 CheckStyle XML 兼容。

$ jshint --reporter=checkstyle myfile.js
<?xml version="1.0" encoding="utf-8"?>
<checkstyle version="4.3">
  <file name="myfile.js">
    <error line="10" column="39" severity="error"
      message="Octal literals are not allowed in strict mode."/>
  </file>
</checkstyle>

另请参阅:编写您自己的 JSHint 报告程序

--verbose

将消息代码添加到 JSHint 输出中。

--show-non-errors

显示 JSHint 生成的其他数据。

$ jshint --show-non-errors myfile.js
myfile.js: line 10, col 39, Octal literals are not allowed in strict mode.

1 error

myfile.js:
  Unused variables:
    foo, bar

--extra-ext

允许您指定要检查的其他文件扩展名(默认值为 .js)。

--extract=[auto|always|never]

告诉 JSHint 在检查之前从 HTML 文件中提取 JavaScript

tmp ☭ cat test.html
<html>
  <head>
    <title>Hello, World!</title>
    <script>
      function hello() {
        return "Hello, World!";
      }
    </script>
  </head>
  <body>
    <h1>Hello, World!</h1>
    <script>
      console.log(hello())
    </script>
  </body>
</html>

tmp ☭ jshint --extract=auto test.html
test.html: line 13, col 27, Missing semicolon.

1 error

如果将其设置为 always,则 JSHint 将始终尝试提取 JavaScript。如果将其设置为 auto,则仅当文件看起来像是 HTML 文件时才会尝试提取。

--exclude

允许您指定不想检查的目录。

--exclude-path

允许您提供自己的 .jshintignore 文件。例如,您可以将 JSHint 指向您的 .gitignore 文件并使用它代替默认的 .jshintignore。

--prereq

允许您指定先决条件文件,即包含整个项目中使用的全局变量定义的文件。

--help

显示一个类似于您现在正在阅读的内容的简洁帮助消息。

--version

显示已安装的 JSHint 版本。