✨
cookiecutterとcruftとcopier
cookiecutterとcruftとcopier
cruftとcopierについて調べてみた。理解するのに公式のドキュメントを読むのが一番良さそうだが備忘録として書いておく。
導入
プロジェクトを始める時にお決まりのディレクトリ構成、ライブラリ、ツール、CI設定、その他を使いまわすためにプロジェクトテンプレートを用意することがある。テンプレートが更新された際、既に作成済みのプロジェクトにコピペで更新を反映したり、更新が面倒で放置されるプロジェクトもある。そこで継続的にテンプレートの更新をプロジェクトに反映するツールを調べてみた。
cruft
cruftはcookiecutterで作ったプロジェクトを継続的に更新するツール。
cruft create https://github.com/timothycrosley/cookiecutter-python/
上記のコマンドを使ってプロジェクトを始める。.cruft.json
というファイルで使用されたテンプレートのgitハッシュやパラメーターが管理されている。
プロジェクトを更新する際にはcruft update
を実行する。cruft check
コマンドでプロジェクトに更新があるか確認できる。これをCIに仕込んであればテンプレートの更新に気付くことができる。過去にcookiecutterを使って作成したプロジェクトをリンクするにはlink
コマンドを使う。
cruft link https://github.com/timothycrosley/cookiecutter-python/
copier
copierはcookiecutter + crutfを1つにしたようなツール。cookiecutterがjsonで設定ファイルを書くのに対してcopierではyamlで記述する。
プロジェクトの作成は次のようにする。
copier path/to/project/template path/to/destination
# copier https://github.com/copier-org/copier.git path/to/destination
プロジェクトの更新はcopier update
のコマンドで行う。cruftの.cruft.json
に値するのが.copier-answers.yml
になる。.cruft.json
と違ってファイル名は自由に命名できる。
Discussion