Skip to main content

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

Project description

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.

History

0.6.4 (2013-08-21)

  • Windows support officially added.

  • Fix TemplateNotFound Exception on Windows (#37).

0.6.3 (2013-08-20)

  • Fix copying of binary files in nested paths (#41), thanks to @sloria.

0.6.2 (2013-08-19)

  • Depend on Jinja2>=2.4 instead of Jinja2==2.7.

  • Fix errors on attempt to render binary files. Copy them over from the project template without rendering.

  • Fix Python 2.6/2.7 UnicodeDecodeError when values containing Unicode chars are in cookiecutter.json.

  • Set encoding in Python 3 unicode_open() to always be utf-8.

0.6.1 (2013-08-12)

  • Improved project template finding. Now looks for the occurrence of {{, cookiecutter, and }} in a directory name.

  • Fix help message for input_dir arg at command prompt.

  • Minor edge cases found and corrected, as a result of improved test coverage.

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.4 (2013-07-22)

  • Only takes in one argument now: the input directory. The output directory is generated by rendering the name of the input directory.

  • Output directory cannot be the same as input directory.

0.3 (2013-07-17)

  • Takes in command line args for the input and output directories.

0.2.1 (2013-07-17)

  • Minor cleanup.

0.2 (2013-07-17)

Bumped to “Development Status :: 3 - Alpha”.

  • Works with any type of text file.

  • Directory names and filenames can be templated.

0.1.0 (2013-07-11)

  • First release on PyPI.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cookiecutter-0.6.4.tar.gz (12.2 kB view details)

Uploaded Source

File details

Details for the file cookiecutter-0.6.4.tar.gz.

File metadata

  • Download URL: cookiecutter-0.6.4.tar.gz
  • Upload date:
  • Size: 12.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for cookiecutter-0.6.4.tar.gz
Algorithm Hash digest
SHA256 4733d9bd47a24f69781949cee3470a0a4b979c194902b5048520601b41dc3cbb
MD5 c62ea87a3fc698b9f0a6a135c82ad9b0
BLAKE2b-256 d2bcaf4de132cc8a96c4b5f2f6bd18ac3a8ae6caa900fe3175b4499a8f75d651

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page