@huckleberry-inc/check-npm-lockfile
v0.1.0
Published
Detect recently published npm packages in lockfiles for supply chain attack prevention
Readme
@huckleberry-inc/check-npm-lockfile
lockfile 内の依存パッケージが最近公開されたものかを検出し、サプライチェーン攻撃を防止する CLI ツール
機能
- lockfile (package-lock.json, yarn.lock) 内の全パッケージを npm registry に問い合わせ
- 指定日数以内に公開されたパッケージを検出
- 初版パッケージ (NEW) を識別
- 検出時に exit code 1 で終了 (CI での利用を想定)
- package-lock.json v1/v2+、yarn v1、yarn Berry に対応
使用方法
npx での実行
npx @huckleberry-inc/check-npm-lockfileCI での使用例 (GitHub Actions)
- name: Check npm lockfile
run: npx @huckleberry-inc/[email protected]オプション指定
# 30日以内に公開されたパッケージを検出
npx @huckleberry-inc/check-npm-lockfile --minimum-release-age 30
# JSON 形式で出力
npx @huckleberry-inc/check-npm-lockfile --format json
# 特定の lockfile を指定
npx @huckleberry-inc/check-npm-lockfile path/to/yarn.lockCLI オプション
| オプション | 型 | デフォルト | 説明 |
|---|---|---|---|
| [lockfile] | string | (自動検出) | lockfile のパス。未指定時は yarn.lock → package-lock.json の順で検出 |
| --minimum-release-age <days> | number | 7 | 最小リリース経過日数。この日数以内に公開されたパッケージを検出 |
| -f, --format <type> | string | console | 出力フォーマット: console または json |
| -c, --concurrency <number> | number | 10 | npm registry API への最大同時リクエスト数 |
| --no-exit-code | boolean | false | 最近のパッケージが見つかっても常に exit code 0 で終了 |
| -v, --verbose | boolean | false | 詳細な進捗表示 |
開発
npm install
npm run buildテスト
npm run test:e2eモック npm registry サーバーを使用した E2E テストが実行されます。npm の認証情報は不要です。
プロジェクト構成
src/
index.ts # Public API エクスポート
cli.ts # CLI エントリポイント
analyzer/
index.ts # コア分析ロジック
parsers/
index.ts # Parser エクスポート
package-lock.ts # package-lock.json パーサー (v1/v2+)
yarn-lock.ts # yarn.lock パーサー (v1/Berry)
registry/
index.ts # Registry エクスポート
npm-client.ts # npm registry API クライアント
output/
index.ts # Output ディスパッチャ
console.ts # プレーンテキスト出力
json.ts # JSON 出力
types/
index.ts # TypeScript 型定義
tests/
e2e.test.ts # E2E テストライセンス
MIT
