Takumi Guard を npm v11.15.0 以降で利用する際の挙動の改善
npm v11.15.0 以降のクライアントでも Takumi Guard を引き続き利用できるよう、npm クライアントに対するレジストリの挙動を改善しました。この変更により、npm v11.15.0 以降をご利用の場合、ロックファイル(package-lock.json)に Takumi Guard のレジストリ URL が記録されるようになります。
変更背景
npm v11.15.0 では、サプライチェーン保護機構である --allow-remote チェックの強制が導入されました。このチェックでは、設定されたレジストリと異なるホストを指す tarball ダウンロード URL を持つ依存パッケージは「remote」として分類され、推移的依存パッケージのダウンロードが拒否されます。
従来の Takumi Guard は、npm クライアントに対してアップストリーム(registry.npmjs.org)の tarball URL をそのまま配信していました。新しいチェックの下では、設定されたレジストリ(npm.flatt.tech)と tarball のホストが一致しないため、npm v11.15.0 以降では Takumi Guard 経由のインストールが EALLOWREMOTE エラーで失敗する場合がありました。
今回の変更により、npm v11.15.0 以降のクライアントに対しては tarball URL を Takumi Guard 自身のホストに書き換えて配信するようになり、正しく「registry」として分類されるようになります。今後の npm のリリースではこのチェックがさらに強化される予定であり(tarball URL がレジストリのパス配下にあることの検証など)、現在および将来の npm バージョンとの互換性を保つために必要な変更となります。
変更の影響範囲
npm v11.15.0 以降への影響: 有
新規追加・更新されたロックファイル(package-lock.json)のエントリには、従来のアップストリームの URL ではなく、Takumi Guard のレジストリ URL(https://npm.flatt.tech/...)が resolved フィールドに記録されるようになります。これは意図された挙動であり、npm のサプライチェーンチェックの下でインストールを成功させるために必要な変更でございますので、ご理解いただけますと幸いです。
パッケージの完全性検証への影響はありません。integrity ハッシュは変更されず、npm audit signatures によるレジストリ署名・アテステーションの検証も従来どおり機能します。
