このページの内容は、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
はこの設定をいくつかの場所で探し、最初のヒットで停止します。
--config
フラグで指定された場所package.json
ファイル(設定はそのファイルのJSON値のjshintConfig
属性として宣言する必要があります).jshintrc
ファイル.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
はこの設定をいくつかの場所で探し、最初のヒットで停止します。
--exclude-path
フラグで指定された場所.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のバージョンを表示します。