プロジェクトに最適な .gitignore をコマンドラインから簡単に生成するためのツール「gibo」
はじめに
プロジェクトに最適な.gitignore
をどうやって作ろうかなと思っていたところ、 gibo という便利ツールを発見したのでメモ。
gibo は、プロジェクトに最適な .gitignore
ファイルを作成してくれるツールです。
様々な言語、フレームワーク、ツールに対応していて、大抵のメジャーなものについては、簡単に .gitignore
を生成できます。
ソースコードを読んでみましたが、簡潔で見やすく、シェルスクリプトの勉強に良いと感じました。
検証環境
インストール
プラットフォームことに最適なインストール方法が異なりますが、実際 1 ファイルのシェルスクリプトなのでダウンロードしてきて $PATH
環境変数の通っているディレクトリに配置すれば動作します。
macOS
Homebrew で一発でインストールできます。
Unix 系 OS
動作確認
インストールができたか確認してみましょう。
使い方
それではツールにふれていきましょう。
.gitignore
の生成
ここでは PHP のプロジェクトを例に取り上げていきます。
最近の PHP プロジェクトでは Composer を使用することが多いですね。
Composer は依存ライブラリをプロジェクト直下の vendor/
ディレクトリに配置します。
このディレクトリは多くの場合、Git の管理対象から除外しておきたいです。
そこで毎回同じような内容を .gitignore
に書くことになりますが、 そこで gibo を使います。
gibo の引数に dump composer
を指定し実行すれば、最適な .gitignore
ファイルを作成できます。
Laravel を使ったプロジェクトも多くなってきましたね。
同様に Laravel に最適化された .gitignore
を生成できます。
( 最近の Laravel は npm
も使うのでそのあたりの考慮も入ってますね。 .vagrant
も付与されています。 )
複数の .gitignore
テンプレートをまとめて出力させることもできます。
結果は標準出力に出力されるので、 .gitignore
にリダイレクトして保存しておきましょう。
提供されている「ボイラープレート」を一覧表示する
先程見た git dump
コマンドですが、引数で指定したテンプレート名を ボイラープレート とよんでいます。
( 僕の時代には「テンプレート」とか「スケルトン」とか呼んでいましたが、最近ではテンプレートのようなものを「ボイラープレート」と呼ぶようですね。 )
gibo で利用できるボイラープレートを知りたい場合は、 gibo list
コマンドを使います。
提供されている「ボイラープレート」を検索する
流石に git list
では見にくいので部分一致、大文字小文字を無視して検索したい場合。
方法は2つあります。
grep
コマンドにパイプでつなぐgibo search
コマンドを使う
上記2つで若干動作が異なります。 ( バグではないかと思っている )
[2023-02-09 追記] プルリクエストを上げたところ、受け入れてもらえました!すでに挙動の違いは修正されています 。
こちらでは 2 つの「ボイラープレート名」が見つかります。パイプでつないだ場合には grep しやすいように一行ごとにボイラープレート名が出力されています。賢い!
ところが、こちらでは 3 つの「ボイラープレート名」が見つかります。
ThinkPHP
という「ボイラープレート名」が使えるか試してみました。
gibo dump
で指定可能なボイラープレートは git list
で見つかったもののみとなっているようです。
なぜ挙動が異なるか?ソースコードを見てみます。
「ボイラープレート」ごとの .gitignore
ファイルはどこから取得している?
Github から取得していた
gitbo のソースコードを見てみました。
先のインストール方法で実行していた gibo update
コマンドですが、こちらを実行するとホームディレクトリ配下に、 .gitignore-boilerplates
というディレクトリが作成されるようになっています。
ボイラープレート別の .gitignore
ファイルはここに格納されます。
これらのファイルは gibo update
したタイミングで GitHub - .gitignore templates から git clone
し、以降はこのファイルを参照します。
.gitignore-boilerplates
ディレクトリの配置場所を変更したい場合は?
GIBO_BOILERPLATES
という環境変数に任意のディレクトリパスを指定することで、デフォルトのボイラープレート格納ディレクトリを変更することができます。
Github 上のボイラープレートファイルを更新するには
gibo では、テンプレートのアップデートは自動では行われないので、必要な場合は手動で行いましょう。
gibo list | grep xxx
と gibo search xxx
はなぜ挙動が違う?
上記2つのコマンドの挙動がなぜ異なるのか?
やはりこれも gitbo のソースコードを見てみました。
git list
はボイラープレートテンプレートディレクトリ直下の .gitignore
という拡張子のファイルを検索し出力しています。
一方 git search
はボイラープレートテンプレートディレクトリ直下だけでなく、 再帰的 に .gitignore
という拡張子のファイルを検索し出力しています。
このような動きの違いで gibo search
のほうが見つかる .gitignore
ファイルが多いようです。
(本当は gibo dump
がこれに対応していないとおかしい気がしました。時間を見つけて作成者に聞いてみます。)
ディスカッション
コメント一覧
まだ、コメントがありません