特定のパッケージを使用しているローカルリポジトリを探す

はじめに

この記事は、grepコマンドによる依存パッケージの調査方法についてのメモです。

GitHubのDependabotなど、依存パッケージの脆弱性警告ツールが普及しました。しかしその警告に従い、複数のリポジトリをまたいで依存パッケージを調査するのは骨の折れる作業です。

こうした状況で便利なコマンドがgrepです。grepは多くの環境に移植されていますので、使い方を一度憶えてしまえば役立つ資産となります。

grep

grepは正規表現によりファイルを検索するUNIXコマンドです。

man page of grep

このコマンドを利用すれば、ファイルを横断した本文検索ができます。

使用例1 : 特定の語句を含むファイルを検索する

% grep -lr <pattern> --include="package.json" --exclude-dir=node_modules ./*

このコマンドの内容を書き下すと、以下のようになります。

カレントディレクトリ./*以下で、ファイル名package.json<pattern>を含む行を探す。ただしディレクトリnode_modulesは除外する。

使用しているオプションは以下の通りです。

  • -r : ディレクトリを再帰処理(デフォルトではディレクトリ直下のファイルを検索する)
  • -l : ファイル名のみを表示(デフォルトでは該当する行も同時に表示する)

使用例2 : 特定の語句を含まないファイルを検索する

% grep -lrL <pattern> --include="package.json" --exclude-dir=node_modules ./*

使用例1に-Lオプションを追加すると、<pattern>文字列を含まないファイルを検索できます。たとえばpackage.jsonにあるべきフィールドが指定されていないプロジェクトを一括で探し当てられます。

参考記事 : 特定の文字列を含まないファイルを検索する

他にも検索パターンやオプションを変更すれば、grepは様々な問題の解決に役立ちます。皆様の問題に合わせてオプションを変更してみてください。

以上、ありがとうございました。