Cookiecutter: 更好的项目模板工具:(1)简介及可用资源汇总

原文档地址:https://cookiecutter.readthedocs.io/en/latest/html

本系列只介绍cookiecutter的基础使用,并且会删除与功能使用无关的部分。深度使用及了解更多详情请请参考原文档。前端

关于Cookiecutter的中文译名,我不知作别人怎么翻译的,我将其翻译为饼干制造机。本系列中将不对其做翻译,直接使用英文原名。java

Cookiecutter简介

Cookiecutter 是一个经过项目模板建立项目的命令行工具。好比,经过Python Package模板来建立Python package项目。(经过Python代码调用Cookiecutter的API能够扩展为自动化建立服务和带有Web UI的服务程序)node

功能特色

  • 跨平台:官方支持Windows、Mac和Linux
  • 能够在Python 2.7, 3.4, 3.5, 3.6, and PyPy.环境中正常使用(此处指的是Cookiecutter的运行环境,而不是你项目的运行环境。使用Cookiecutter不须要你懂得编写Python代码)
  • 项目模板能够是任何编程语言或标记格式:Python, JavaScript, Ruby, CoffeeScript, RST, Markdown, CSS, HTML等任何你能叫出名字的。你也能够在同一个项目模板中使用多种语言。
  • 命令行的简单使用:
# 从cookiecutter-pypackage.git模板建立项目
# 你将会被提示输入相应的值。
# 而后Cookiecutter将基于你的输入在当前工做目录中建立Python包
$ cookiecutter https://github.com/audreyr/cookiecutter-pypackage
# 为了简洁起见,repos在GitHub上能够只使用“gh”前缀
$ cookiecutter gh:audreyr/cookiecutter-pypackage
  • 在命令行中使用本地模板:
# 从本地在当前目录建立项目
# cookiecutter-pypackage/ template
$ cookiecutter cookiecutter-pypackage/
  • 目录名和文件名能够模板化。例如:{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}.py
  • 支持无限层级的目录嵌套。
  • 文件和目录名称100%使用Jinja2完成模板化。
  • 只需在·cookiecutter.json·文件中定义模板变量便可。 例如:
{
    "full_name": "Tacey Wong",
    "email": "xinyong.wang@qq.com",
    "project_name": "Complexity",
    "repo_name": "complexity",
    "project_short_description": "使人耳目一新的简单的静态网站生成器.",
    "release_date": "2019-03-10",
    "year": "2019",
    "version": "0.0.1"
}
  • 没有你用·--no-input·来禁止,系统会提示你输入:
    • cookiecutter.json中键/key对应的值/value。
    • cookiecutter.json中的缺省值
    • 提示符按顺序显示
  • 跨平台支持~/.cookiecutterrc文件:
default_context:
    full_name: "Tacey Wong"
    email: "xinyong.wang@qq.com"
    github_username: "taceywong"
cookiecutters_dir: "~/.cookiecutters/"
  • 克隆的Cookiecutter项目模板会缺省放置在~/.cookiecutters/目录下,若是特殊指定,会放置在cookiecutters_dir对应的目录下:
# 克隆cookiecutter-pypackage
$ cookiecutter gh:audreyr/cookiecutter-pypackage
# 如今你能够根据名字使用对应的模板
$ cookiecutter cookiecutter-pypackage
  • 您可使用你本地模板、远程Git repos
  • 默认上下文:指定在生成项目时要用做默认值的键/值对
  • 用命令行参数注入额外的上下文:
$ cookiecutter --no-input gh:msabramo/cookiecutter-supervisor program_name=foobar startsecs=10
  • 直接访问Cookiecutter API容许注入额外的上下文。
  • 预生成和后生成挂钩/hook:在生成项目以前或以后运行的Python或shell脚本。
  • 本地项目的路径能够指定为绝对路径或相对路径。
  • 项目始终生成到当前目录。

可用的Cookiecutter模板

如今在已经有不少开源的Cookiecutter 项目模板可供选择。python

特定的Cookiecutter模板

这些模板由cookiecutter官方团队进行维护:jquery

Cookiecutter模板分类

社区驱动的各种Cookiecutter模板(非Cookiecutter官方维护)android

Pythonwebpack

Python-Djangoios

Python-Pyramidgit

  • pyramid-cookiecutter-alchemy:Cookiecutter (项目模板),使用SQLite建立Pyramid项目,SQLAlchemy用于ORM,URL调度用于路由,Jinja2用于模板。
  • pyramid-cookiecutter-starter: 使用URL调度进行路由分配,使用Jinjab 二、Chameleon或Mako模板建立Pyramid入门项目的Cookiecutter (项目模板)。
  • pyramid-cookiecutter-zodb:Cookiecutter(项目模板),用于建立Pyramid项目,使用ZODB进行持久存储,遍历路由,使用Chameleon进行模板化。
  • substanced-cookiecutter: 用于建立Substance D初始项目的cookiecutter(项目模板)。 Substance D是基于Pyramid实现的。
  • cookiecutter-pyramid-talk-python-starter: 一个自觉得是的Cookiecutter模板,用于建立PyramidWeb应用程序,从开发链的下游开始。这个cookiecutter模板将建立一个新的Pyramid Web应用程序,其中包含电子邮件,sqlalchemy,rollbar以及更多的集成。

Cookiecutter (meta)

用于生成Cookiecutter项目模板的元模板。

Ansible

Git

C

C++

C#

Common Lisp

Elm

Golang

Java

JS

Kotlin

LaTeX/XeTeX

PHP

Sublime Text

Berkshelf-Vagrant

HTML

Data Science

  • widget-cookiecutter: 用于建立自定义Jupyter小部件项目的cookiecutter模板。
  • cookiecutter-data-science:为在Python中进行和共享数据科学工做的逻辑的、合理标准化的、灵活的项目结构。此处提供了的完整文档 。
  • cookiecutter-r-data-analysis: 组织基于R的工做流->doc(经过pandoc)->pdf报告(经过latex)的模板
  • cookiecutter-docker-science: Cookiecutter template for data scientists working in Docker containers.为使用Docker容器工做的数据科学家准备的Cookiecutter模板。

Reproducible Science

  • cookiecutter-reproducible-science: 用于开始一个可重复和透明的科学项目,包括数据,模型,分析和报告的cookiecutter模板 (好比你的科学论文)。与上面数据科学Cookiecutter模板的哲学很是一致

数据驱动的Journalism

  • cookiecutter-data-driven-journalism: 经过持续组织数据日志项目和一些预先填充的文件来促进数据日志的透明度的Cookiecutter模板(包括 .gitignore, README, AUTHORS)

持续交付

云工具

Tornado

其余

与Cookiecutter相似的项目

  • Paste 具备建立骨架项目的建立选项。
  • Diecutter: 一个提供模板和变量的配置文件的API服务。
  • Django的tartproject和startapp命令可使用-template选项。
  • python-packager:使用本身的模板建立Python包,并提供可配置的选项。
  • Yeoman 有一个受Rails启发的生成器系统,为应用程序提供脚手架。
  • Pyramid的pcreate命令,用于从脚手架模板建立Pyramid 项目。
  • mr.bob 是一个文件系统模板渲染器,用于弃用paster和templer等工具
  • grunt-init 曾经被内置到Grunt中,如今是一个独立的脚手架工具,能够自动建立项目。
  • scaffolt 使用Handlebars 的JSON生成器。
  • init-skeleton 克隆或复制存储库,执行npm安装和bower安装,并删除.git目录。
  • Cog 由Ned Batchelder开发的基于python的代码生成工具包
  • Skaffold 基于python和json配置的django / MVC生成器,带有一些附加组件和集成。
相关文章
相关标签/搜索