A command-line utility that creates projects from project templates, e.g. creating a Python package project from a Python package project template.
- Documentation: http://cookiecutter.rtfd.org
- GitHub: https://github.com/audreyr/cookiecutter
- Free software: BSD license
- PyPI: https://pypi.python.org/pypi/cookiecutter
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 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.
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": "[email protected]", "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" }
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.
Here is a list of working Cookiecutter project templates for you to use or fork:
- cookiecutter-pypackage: @audreyr's ultimate Python package project template.
- cookiecutter-jquery: A jQuery plugin project template based on jQuery Boilerplate.
- cookiecutter-flask : A Flask template with Bootstrap 3, starter templates, and working user registration.
- cookiecutter-django: A Django project template with Bootstrap 3, customizable users app, starter templates, and working user registration.
- cookiecutter-djangopackage: A template designed to create reusable third-party PyPI friendly Django apps. Documentation is written in tutorial format.
- bootstrap.c: A template for simple projects written in C with autotools.
- cookiecutter-openstack: A template for an OpenStack project.
- cookiecutter-component: A template for a Component JS package.
Make your own, then submit a pull request adding yours to this list!
- 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.
- Pyramid's pcreate command for creating Pyramid projects from scaffold templates.