Cookiecutter
A command-line utility that creates projects from project templates, e.g.
creating a Python package project from a Python package project template.
Features
Did someone say features? Cookiecutter’s got more features than you can shake
a stick at!
Works with Python 2.6, 2.7, 3.3, and PyPy.
Simple command line usage:
# Create project from the cookiecutter-pypackage.git repo template
# You'll be prompted to enter values.
# Then it'll create your Python package based on those values.
$ cookiecutter https://github.com/audreyr/cookiecutter-pypackage.git
Can also use it at the command line with a local template:
# Create project from the local cookiecutter-pypackage/ template
$ cookiecutter cookiecutter-pypackage/
Or use it from Python:
from cookiecutter.main import cookiecutter
# Create project from the cookiecutter-pypackage/ template
cookiecutter('cookiecutter-pypackage/')
# Create project from the cookiecutter-pypackage.git repo template
cookiecutter('https://github.com/audreyr/cookiecutter-pypackage.git')
Directory names and filenames can be templated. For example:
{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}.py
Supports unlimited levels of directory nesting.
All templating is done with Jinja2.
Project templates can be in any programming language or markup format:
Python, JavaScript, Ruby, CoffeeScript, RST, Markdown, CSS, HTML, you name
it. You can use multiple languages in the same project template.
Simply define your template variables in a cookiecutter.json file. For example:
{
"full_name": "Audrey Roy",
"email": "audreyr@gmail.com",
"project_name": "A Lot of Effort",
"repo_name": "alotofeffort",
"project_short_description": "Deploy static HTML sites to S3 with the simple 'alotofeffort' command.",
"release_date": "2013-07-10",
"year": "2013",
"version": "0.1.1"
}
If generating a project from a git repo template, you are prompted for input:
Prompts are the keys in cookiecutter.json.
Default responses are the values in cookiecutter.json.
Prompts are shown in order (thanks to those handy OrderedDicts!)
Available Templates
Here is a list of the working Cookiecutter project templates that exist:
Make your own, then submit a pull request adding yours to this list!
Similar projects
Paste has a create option that creates a skeleton project.
Diecutter: an API service that will give you back a configuration file from
a template and variables.
Django’s startproject and startapp commands can take in a –template
option.
python-packager: Creates Python packages from its own template, with
configurable options.
Yeoman has a Rails-inspired generator system that provides scaffolding
for apps.
History
0.6.0 (2013-08-08)
Config is now in a single cookiecutter.json instead of in json/.
When you create a project from a git repo template, Cookiecutter prompts
you to enter custom values for the fields defined in cookiecutter.json.
0.5 (2013-07-28)
Friendlier, more simplified command line usage:
# Create project from the cookiecutter-pypackage/ template
$ cookiecutter cookiecutter-pypackage/
# Create project from the cookiecutter-pypackage.git repo template
$ cookiecutter https://github.com/audreyr/cookiecutter-pypackage.git
Can now use Cookiecutter from Python as a package:
from cookiecutter.main import cookiecutter
# Create project from the cookiecutter-pypackage/ template
cookiecutter('cookiecutter-pypackage/')
# Create project from the cookiecutter-pypackage.git repo template
cookiecutter('https://github.com/audreyr/cookiecutter-pypackage.git')
Internal refactor to remove any code that changes the working directory.
0.2 (2013-07-17)
Bumped to “Development Status :: 3 - Alpha”.