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