このページの内容は、JSHint プロジェクトリポジトリから取得しています。エラーを見つけた場合は、issue を作成するか(できれば)、プルリクエストを送信してください!

コマンドラインインターフェース

JSHint CLI は npm を介してインストールできます(手順についてはインストールページを参照してください)。

目次:入力の指定 · リンティングオプションの指定 · 特殊オプション · ファイルの無視 · フラグ

入力の指定

jshint実行ファイルは、コマンドライン引数としてファイルシステムパスを受け入れます。指定されたパスがファイルを表す場合、実行ファイルはそのファイルを読み取り、含まれるJavaScriptコードをlintします。

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

1 error

指定されたパスがファイルシステムディレクトリを表す場合、JSHintはそのディレクトリとそのすべてのサブディレクトリを再帰的に走査し、すべてのJavaScriptファイルを読み取り、その内容をlintします。

$ 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は標準入力から読み取ります。

リンティングオプションの指定

jshint実行ファイルは、外部のJSON形式のファイルで指定されたリンティングオプションを適用できます。そのようなファイルは次のようになります。

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

jshintはこの設定をいくつかの場所で探し、最初のヒットで停止します。

  1. --config フラグで指定された場所
  2. カレントディレクトリまたはカレントディレクトリの親ディレクトリにあるpackage.jsonファイル(設定はそのファイルのJSON値のjshintConfig属性として宣言する必要があります)
  3. カレントディレクトリまたはカレントディレクトリの親ディレクトリにある.jshintrcファイル
  4. カレントユーザーのホームディレクトリにある.jshintrcファイル(定義されている場合)

この検索で結果が得られない場合、jshintは、リンティングルールが無効になっているかのように入力コードをlintします。

コマンドラインインターフェースは、他のコンテキストで使用できるものに加えて、いくつかの特殊オプションを提供します。

特殊オプション

以下のオプションはファイルシステムに関連し、設定ファイル内からのみ使用できます(つまり、インラインディレクティブやAPIからは使用できません)。

extends

"ベース"として別の設定ファイルを使用します。このオプションの値は、別の設定ファイルへのファイルパスである必要があり、そのパスは現在のファイルからの相対パスである必要があります。

たとえば、プロジェクトのトップレベルディレクトリ(たとえば、./.jshintrc)に.jshintrcファイルを作成して、プロジェクト全体で使用したいリンティングオプションを指定できます。

{
  "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は、ファイルシステム内の場所に基づいてファイルを無視するように設定できます。lintしないファイル名、ファイルパス、またはファイルパスパターンの数をリストする専用の「ignore」ファイルを作成できます。パスパターンは、minimatch npm モジュールを使用して解釈されます。これは、Unix のファイル名マッチング構文である fnmatchに基づいています。

build/
src/**/tmp.js

jshintはこの設定をいくつかの場所で探し、最初のヒットで停止します。

  1. --exclude-path フラグで指定された場所
  2. カレントディレクトリまたはその親ディレクトリにある.jshintignoreファイル

この検索で結果が得られない場合、jshintはどのファイルも無視しません。

フラグ

--config

jshintがリンティングオプションを読み込むファイルシステム上の場所を明示的に設定します。

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

--reporter

独自の出力関数でデフォルトの出力関数を置き換えることで、JSHintの出力を変更できます。

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

このフラグは、JSLintとの互換性のある出力を作成するためのjslintと、CheckStyle XMLとの互換性のある出力を作成するためのcheckstyleという2つの事前定義されたレポーターもサポートしています。

$ 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]

lintする前にHTMLファイルからJavaScriptを抽出するようにJSHintに指示します。

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

lintしないディレクトリを指定できます。

--exclude-path

独自の.jshintignoreファイルを提供できます。たとえば、.gitignoreファイルをJSHintに指定し、デフォルトの.jshintignoreの代わりに使用できます。

--prereq

プロジェクト全体で使用されるグローバル変数の定義を含む、前提条件ファイル(つまり、ファイル)を指定できます。

--help

今読んでいるものと同様の簡単なヘルプメッセージが表示されます。

--version

インストールされているJSHintのバージョンを表示します。