Skip to content

PaulMontgomery/cookiecutter

 
 

Repository files navigation

Cookiecutter

image

image

image

image

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

image

Features

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": "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"
    }
  • 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.

Additional Features in 0.7.0

0.7.0 is not out yet, but these features are in the master branch:

  • 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.
  • In addition to git repos, you can also use cookiecutters directly 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.

Available Cookiecutters

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!

Python

C

  • bootstrap.c: A template for simple projects written in C with autotools.

JS

LaTeX/XeTeX

  • pandoc-talk: A cookiecutter template for giving talks with pandoc and XeTeX.

HTML

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.
  • mr.bob is a filesystem template renderer, meant to deprecate tools such as paster and templer.

Community

If you have questions, don't hesitate to ask by filing an issue with your question. (Questions are often a good indicator of places where the docs can be improved :)

Development on Cookiecutter is community-driven. Huge thanks to all the contributors who have pitched in to help make Cookiecutter an even better tool.

Everyone is invited to contribute. Read the contributing instructions, then get started.

All members of the Cookiecutter community (end users, project template maintainers, contributors, etc.) are invited to join the Cookiecutter Gittip community.

About

A command-line utility that creates projects from cookiecutters (project templates). E.g. Python package projects, jQuery plugin projects.

Resources

License

Stars

Watchers

Forks

Packages

No packages published