基于项目模板创建项目的命令行工具:Cookiecutter
一个命令行实用程序,从cookiecutters(项目模板)创建的项目,比如:创建从一个Python包项目模板的Python包项目。
- 文档: 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 in the current working directory, # based on those values. $ cookiecutter gh:audreyr/cookiecutter-pypackage
-
Can also use it at the command line with a local template:
# Create project in the current working directory, 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" }
-
Unless you suppress it with --no-input, 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.
-
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.
-
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
-
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.
</ul> - cookiecutter-pypackage: @audreyr's ultimate Python package project template.
- cookiecutter-flask : A Flask template with Bootstrap 3, starter templates, and working user registration.
- cookiecutter-simple-django: A cookiecutter template for creating reusable Django projects quickly.
- cookiecutter-django: A bleeding edge 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.
- cookiecutter-django-cms: A template for Django CMS with simple Bootstrap 3 template. It has a quick start and deploy documentation.
- cookiecutter-djangocms-plugin: A template to get started with custom plugins for django-cms
- 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-django-crud: A template to create a Django app with boilerplate CRUD around a model including a factory and tests.
- cookiecutter-quokka-module: A template to create a blueprint module for Quokka Flask CMS.
- cookiecutter-django-lborgav: Another cookiecutter template for Django project with Booststrap 3 and FontAwesome 4.
- cookiecutter-django-paas: Django template ready to use in SAAS platforms like Heroku, OpenShift, etc..
- cookiecutter-kivy: A template for NUI applications built upon the kivy python-framework.
- cookiecutter-pypackage-minimal: A mimimal Python package template.
- cookiecutter-ansible-role: A template to create ansible roles. Forget about file creation and focus on actions.
- 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-pylibrary-minimal: Same as above but without Pytest and static configuration for Tox/Travis/AppVeyor (no generator).
- cookiecutter-pyvanguard: A template for cutting edge Python development. Invoke, pytest, bumpversion, and Python 2/3 compatability.
- 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.
- bootstrap.c: A template for simple projects written in C with autotools.
- cookiecutter-avr: A template for avr development.
- BoilerplatePP: A simple cmake template with unit testing for projects written in C++.
- cookiecutter-cl-project: A template for Common Lisp project with bootstrap script and Slime integration.
- cookiecutter-jquery: A jQuery plugin project template based on jQuery Boilerplate.
- cookiecutter-jswidget: A project template for creating a generic front-end, non-jQuery JS widget packaged for multiple JS packaging systems.
- cookiecutter-component: A template for a Component JS package.
- pandoc-talk: A cookiecutter template for giving talks with pandoc and XeTeX.
- slim-berkshelf-vagrant: A simple cookiecutter template with sane cookbook defaults for common vagrant/berkshelf cookbooks.
- cookiecutter-complexity: A cookiecutter for a Complexity static site with Bootstrap 3.
- cookiecutter-tumblr-theme: A cookiecutter for a Tumblr theme project with GruntJS as concatination tool.
- 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.
- grunt-init used to be built into Grunt and is now a standalone scaffolding tool to automate project creation.
- scaffolt consumes JSON generators with Handlebars support.
- init-skeleton clones or copies a repository, executes npm install and bower install and removes the .git directory.
- Cog python-based code generation toolkit developed by Ned Batchelder
可用的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!