コンテンツにスキップ

cookikecutter と 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と違ってファイル名は自由に命名できる。

参考