A command-line utility that creates projects from cookiecutters (project templates), e.g. creating a Python package project from a Python package project template.
Did someone say features?
Cross-platform: Windows, Mac, and Linux are officially supported.
Works with Python 2.6, 2.7, 3.3, and PyPy. (But you don’t have to know/write Python code to use Cookiecutter.)
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.
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 in the current working directory, # 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 in the current working directory, 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.
100% of templating is done with Jinja2. This includes file and directory names.
Simply define your template variables in a cookiecutter.json file. For example:
{ "full_name": "Audrey Roy", "email": "audreyr@gmail.com", "project_name": "Complexity", "repo_name": "complexity", "project_short_description": "Refreshingly simple static site generator.", "release_date": "2013-07-10", "year": "2013", "version": "0.1.1" }
Unless you suppress it with –no-input, you are prompted for input:
Cross-platform support for ~/.cookiecutterrc files:
default_context: full_name: "Audrey Roy" email: "audreyr@gmail.com" github_username: "audreyr" cookiecutters_dir: "~/.cookiecutters/"
Cookiecutters (cloned Cookiecutter project templates) are put into ~/.cookiecutters/ by default, or cookiecutters_dir if specified.
You can use local cookiecutters, or remote cookiecutters directly from Git repos or from Mercurial repos on Bitbucket.
Default context: specify key/value pairs that you want used as defaults whenever you generate a project
Pre- and post-generate hooks: Python or shell scripts to run before or after generating a project.
Paths to local projects can be specified as absolute or relative.
Projects are always generated to your current directory.
Here is a list of cookiecutters (aka Cookiecutter project templates) for you to use or fork.
Make your own, then submit a pull request adding yours to this list!
The core committer team is @audreyr, @pydanny, @michaeljoseph, and @pfmoore. We welcome you and invite you to participate.
Stuck? Try one of the following:
Development on Cookiecutter is community-driven:
Connect with other Cookiecutter contributors and users in IRC:
Encouragement is unbelievably motivating. If you want more work done on Cookiecutter, show support:
Got criticism or complaints?
Waiting for a response to an issue/question?