Cookiecutterを使ってプロジェクトを生成する

Cookiecutterというプロジェクト生成ツールがある。 ツールは Python 製だけどテンプレートは言語問わず色々と準備されている。 ざっと眺めただけで使い方がわかるのでありがたい。

はじめにインストールする。

1
sudo pip install cookiecutter

下みたいにURLを指定するとテンプレートをダウンロードして利用できる。 ダウンロードされたテンプレートは ~/.cookiecutters に置かれる。

1
cookiecutter https://github.com/audreyr/cookiecutter-pypackage.git

一度ダウンロードしたテンプレートは直接使用できる。

1
cookiecutter cookiecutter-pypackage

また ~/.cookiecutter_replay/${template_name}.json に最後に利用したオプションが保存される。

テンプレートの構成

必須ファイルは cookiecutter.json と生成対象のテンプレートディレクトリの2つ。 生成対象のディレクトリには Jinja2 テンプレートを含める。

ファイル 内容
cookiecutter.json 変数名:デフォルト値 or 選択肢(配列)になるマップを入れる
{{cookiecutter.xxxx}} ディレクトリ or ファイルで生成対象となる(変数名は cookiecutter.json で指定されている)
1
2
3
4
5
tree
.
|-- cookiecutter.json
`-- {{cookiecutter.project_slug}}
    |-- ...

各ファイルは Jinja2 テンプレートになっている。 ファイル名とかファイル内で変数展開するところは {{cookiecutter.foo}} って感じを使うっぽい。

まとめ

cargo とか mix みたいなツールのついてない言語だったら、これを使って準備するの楽になる場所が増えて良いと思った。

comments powered by Disqus