フック

フックの設定:スキャン対象を選ぶ

ファイルをスキャンするフックが何を除外するかを、すべてのフックにまとめて、または 1 つずつ選べます。

checkers ブロックは .lagune/configs.json の中にあり、ファイルをスキャンするフックが何を除外するかを、すべてのフックにまとめて、または 1 つずつ設定します。

設定方法​

パスやパターンはコマンドラインから追加・削除できます。パターンは、シェルに書き換えられないよう引用符で囲んでください:

npx lagune write add --ignore test/fixtures
npx lagune write add --ignore 'packages/*/dist' --checker secrets
npx lagune write remove --ignore test/fixtures

ファイルに直接書くこともできます:

{
"checkers": {
"ignore": ["test/fixtures"],
"secrets": { "gitignore": false, "ignore": ["test/fixtures", "temp"] }
}
}

設定項目​

キー値デフォルト説明
gitignoretrue または falsetrueGit が無視するものを除外する。Git が追跡しているファイルは、どちらの場合もスキャンする。
ignoreプロジェクトルートからのパスまたはパターン[]それぞれに一致するものと、その下にあるすべてを除外する。Git が追跡しているファイルであっても除外する。

checkers の直下に書いたキーは、すべてのチェッカーに適用されます。チェッカー名の下に書いたキーはそのチェッカーだけに適用され、共通のキーを置き換えます。そのため上の例では、secrets は Git が無視するものもスキャンし、test/fixtures と temp を除外します。write add --ignore でチェッカーに初めて専用のリストを作ると、そのリストは共通のリストのコピーから始まります。

パターン​

パターンはプロジェクトルートを起点とします。そのため *.generated.ts はルート直下のファイルにしか一致せず、**/*.generated.ts はどの階層のファイルにも一致します。名前は大文字と小文字の区別も含めて、完全に一致する必要があります。

パターン除外されるもの
distプロジェクトルートにある dist
packages/*/distdist(packages の下にある各フォルダー内)
**/dist階層を問わず、すべての dist
**/*.generated.ts名前が .generated.ts で終わるすべてのファイル
fixture-?fixture-a、fixture-1 など
[ab]-cachea-cache と b-cache
[*]x*x(* を文字どおりに扱う)

結果の読み方​

レポートの最後に、スキャンで除外したパスの数を、何によって無視されたかの内訳とともに表示します:

Skipped 25 paths that Git ignores and 3 paths that .lagune/configs.json ignores. Name one with --dir or --file to scan it.

--dir または --file で指定したパスは、設定にかかわらずスキャンします。エンジンが読み取れない設定があると、チェッカーはその設定を示すエラーを出して停止します。たとえば、! や空白で始まるパターン、プロジェクトの外に出るパターン、角かっこが閉じていないパターン、一致の判定に時間がかかりすぎるパターンです。

よくある質問

いいえ。charter は、プロジェクトを読み取った結果、守るべきコードではないと判断したコミット済みのフォルダー(脆弱に見えるように書かれたテスト用フィクスチャなど)を一覧にし、番号で選んだものだけを記録します。

リポジトリが信頼できるものではないとき(リポジトリ自身の .gitignore ファイルがコードを隠している可能性があります)や、ビルド時に埋め込まれたキーがビルドフォルダーに含まれている可能性があるときです。すべてのチェッカー、または 1 つのチェッカーに対して gitignore を false に設定してください。