ckaserer/cookiecutter
A command-line utility that creates projects from cookiecutters (project templates)
1.0K
Cookiecutter is 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.7, 3.5, 3.6, 3.7, 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 for containerized version:
# First you need to source the cookiecutter bash function wrapping the
# docker command for ease of use.
# We recommend you put the source command in your bashrc to avoid
# sourcing the bashrc manually.
$ source /path/to/git/repo/bashrc
# 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
# For the sake of brevity, repos on GitHub can just use the 'gh' prefix
$ cookiecutter gh:audreyr/cookiecutter-pypackage
# First you need to source the cookiecutter bash function wrapping the
# docker command for ease of use.
# We recommend you put the source command in your bashrc to avoid
# sourcing the bashrc manually.
$ source /path/to/git/repo/bashrc
# Create project in the current working directory, from the local
# cookiecutter-pypackage/ template
$ cookiecutter cookiecutter-pypackage/
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')
{{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:
cookiecutter.json
.cookiecutter.json
.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.
If you have already cloned a cookiecutter into ~/.cookiecutters/
, you can reference it by directory name:
# Clone cookiecutter-pypackage
$ cookiecutter gh:audreyr/cookiecutter-pypackage
# Now you can use the already cloned cookiecutter by name
$ cookiecutter cookiecutter-pypackage
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.
Inject extra context with command-line arguments:
cookiecutter --no-input gh:msabramo/cookiecutter-supervisor program_name=foobar startsecs=10
Direct access to the Cookiecutter API allows for injection of extra context.
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.
Making great cookies takes a lot of cookiecutters and contributors. We're so pleased that there are many Cookiecutter project templates to choose from. We hope you find a cookiecutter that is just right for your needs.
These Cookiecutters are maintained by the cookiecutter team:
Python | Python-Django | Python-Pyramid | Cookiecutter (meta) | Ansible | Git | C | C++ | C# | Common Lisp | Elm | Golang | Java | JS | Kotlin | LaTeX/XeTeX | PHP | Berkshelf-Vagrant | HTML | Scala | 6502 Assembly | Data Science | Tornado | Reproducible Science | Continuous Delivery
If you don't find a cookiecutter that suits your needs here, please consider writing or suggesting one. We wish for our users to find a solution for their use cases, and we provide a list of other projects that we do not maintain for your convenience (please see the Similar Projects section).
The core committer team can be found in authors section. We are always welcome and invite you to participate.
Stuck? Try one of the following:
Development on Cookiecutter is community-driven:
Connect with other Cookiecutter contributors and users on Gitter:
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?
This project is run by volunteers. Shortly we will be providing means for organizations and individuals to support the project.
Everyone interacting in the Cookiecutter project's codebases, issue trackers, chat rooms, and mailing lists is expected to follow the PyPA Code of Conduct.
You can check all cookiecutter templates on GitHub. If you are template publisher keep in mind to add the cookiecutter-template
topic to your repository and the correct language tags.
Please avoid creating PRs for listing additional templates. We outsourced their listing due to extra maintenance required to review them. We will likely replace the lists below with links to GitHub queries for each category.
cookiecutter-pypackage: @audreyr's ultimate Python package project template.
cookiecutter-pipproject: Minimal package for pip-installable projects.
cookiecutter-pypackage-minimal: A minimal Python package template.
cookiecutter-lux-python: A boilerplate Python project that aims to create Python package with a convenient Makefile-facility and additional helpers.
cookiecutter-flask : A Flask template with Bootstrap 3, starter templates, and working user registration.
cookiecutter-flask-2: A heavier weight fork of cookiecutter-flask, with more boilerplate including forgotten password and Heroku integration.
cookiecutter-flask-foundation : Flask Template with caching, forms, sqlalchemy and unit-testing.
cookiecutter-flask-minimal : Minimal but production-ready Flask project template with no other dependencies except for Flask itself.
cookiecutter-flask-skeleton : Flask starter project.
cookiecutter-bottle : A cookiecutter template for creating reusable Bottle projects quickly.
cookiecutter-openstack: A template for an OpenStack project.
cookiecutter-docopt: A template for a Python command-line script that uses docopt for arguments parsing.
cookiecutter-quokka-module: A template to create a blueprint module for Quokka Flask CMS.
cookiecutter-kivy: A template for NUI applications built upon the kivy python-framework.
cookiedozer: A template for Python Kivy apps ready to be deployed to android devices with Buildozer.
cookiecutter-pylibrary: An intricate template designed to quickly get started with good testing and packaging (working configuration for Tox, Pytest, Travis-CI, Coveralls, AppVeyor, Sphinx docs, isort, bumpversion, packaging checks etc).
cookiecutter-pyvanguard: A template for cutting edge Python development. Invoke, pytest, bumpversion, and Python 2/3 compatibility.
Python-iOS-template: A template to create a Python project that will run on iOS devices.
Python-Android-template: A template to create a Python project that will run on Android devices.
cookiecutter-tryton: A template to create base and external Tryton modules.
cookiecutter-tryton-fulfilio: A template for creating tryton modules.
cookiecutter-pytest-plugin: Minimal Cookiecutter template for authoring pytest plugins that help you to write better programs.
cookiecutter-tox-plugin: Minimal Cookiecutter template for authoring tox plugins to change or extend the behavior of your test automation.
cookiecutter-tapioca: A Template for building tapioca-wrapper based web API wrappers (clients).
cookiecutter-muffin: A Muffin template with Bootstrap 3, starter templates, and working user registration.
cookiecutter-octoprint-plugin: A template for building plugins for OctoPrint.
cookiecutter-funkload-friendly: Cookiecutter template for a funkload-friendly project.
cookiecutter-python-app: A template to create a Python CLI application with subcommands, logging, YAML configuration, pytest tests, and Virtualenv deployment.
morepath-cookiecutter: Cookiecutter template for Morepath, the web microframework with superpowers.
Springerle/hovercraft-slides: A template for new Hovercraft! presentation projects (impress.js
slides in re\ Structured\ Text).
cookiecutter-snakemake-analysis-pipeline: One way to easily set up Snakemake-based analysis pipelines.
cookiecutter-py3tkinter: Template for Python 3 Tkinter application gui.
cookiecutter-pyqt5: A prebuilt PyQt5 GUI template with a fully featured Pytest test suite and Travis CI integration all in an optimal Python package.
cookiecutter-pyqt4: A prebuilt PyQt4 GUI template with a logging support, structure for tests and separation of ui and worker components.
cookiecutter-xontrib: A template for building xontribs, a.k.a xonsh contributions.
cookiecutter-conda-python: A template for building Conda Python packages.
cookiecutter-pypackage-rust-cross-platform-publish: A template for a Python wheel containing a Rust binary module that supports releasing on Windows, OSX and Linux.
cookiecutter-telegram-bot: A template project for Telegram bots with webhooks on CherryPy.
python-project-template: A template for Python projects with sophisticated release automation.
cookiecutter-anyblok-project: A template for Anyblok based projects.
cookiecutter-python-cli: A cookiecutter template for creating a Python CLI application using click.
Meta-templates for generating Cookiecutter project templates.
docker pull ckaserer/cookiecutter