Cookiecutter

https://badge.fury.io/py/cookiecutter.png https://travis-ci.org/audreyr/cookiecutter.png?branch=master https://pypip.in/d/cookiecutter/badge.png https://coveralls.io/repos/audreyr/cookiecutter/badge.png?branch=master

A command-line utility that creates projects from project templates, e.g. creating a Python package project from a Python package project template.

https://raw.github.com/audreyr/cookiecutter/aa309b73bdc974788ba265d843a65bb94c2e608e/cookiecutter_medium.png

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": "Complexity",
            "repo_name": "complexity",
            "project_short_description": "A refreshingly simple HTML-based 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 (thanks to those handy OrderedDicts!)

Available Templates

Here is a list of the working Cookiecutter project templates that exist:

  • 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.

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.
  • Pyramid‘s pcreate command for creating Pyramid projects from scaffold templates.

Table Of Contents

Previous topic

Cookiecutter: Better Project Templates

Next topic

Installation

This Page