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

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

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

Cookiecutter简介

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

功能特点

  • 跨平台:官方支持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 项目模板可供选择。

特定的Cookiecutter模板

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

Cookiecutter模板分类

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

Python

Python-Django

Python-Pyramid

  • pyramid-cookiecutter-alchemy:Cookiecutter (项目模板),使用SQLite创建Pyramid项目,SQLAlchemy用于ORM,URL调度用于路由,Jinja2用于模板。
  • pyramid-cookiecutter-starter: 使用URL调度进行路由分配,使用Jinjab 2、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生成器,带有一些附加组件和集成。

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

  1. Cookiecutter: 更好的项目模板工具:(2)安装及基础使用

    安装 通过python包管理工具 命令行输入 $pip install cookiecutter 或者 # mac os经常会禁止用户全局安装python包 $pip install --user c ...

  2. Cookiecutter: 更好的项目模板工具:(3)高级用法

    本文中的Hook就是钩子,钩子就是Hook 使用生成前/生成后钩子脚本 你可以在项目生成之前和/或之后运行Python或Shell脚本. 像这样把它们放进Hook里: cookiecutter-som ...

  3. 【MVC】ASP.NET MVC 4项目模板的结构简介

    引言     在VS2012新建一个窗体验证的MVC 4项目后,可以看到微软已经帮我们做了很多了,项目里面该有的都有了,完全可以看成一个简单网站.作为开发,能理解里面文件结构和作用,也算是半只脚踏进M ...

  4. Vue.js——60分钟webpack项目模板快速入门

    概述 browserify是一个 CommonJS风格的模块管理和打包工具,上一篇我们简单地介绍了Vue.js官方基于browserify构筑的一套开发模板.webpack提供了和browserify ...

  5. Vue.js——60分钟browserify项目模板快速入门

    概述 在之前的一系列vue.js文章,我们都是用传统模式引用vue.js以及其他的js文件的,这在开发时会产生一些问题. 首先,这限定了我们的开发模式是基于页面的,而不是基于组件的,组件的所有代码都直 ...

  6. Gulp.js - 简单、直观的自动化项目构建工具

    Gulp.js 是一个简单.直观的构建系统.崇尚代码优于配置,使复杂的任务更好管理.通过结合 NodeJS 的数据流的能力,你能够快速构建.通过简单的 API 接口,只需几步就能搭建起自己的自动化项目 ...

  7. 20Spring_JdbcTemplatem模板工具类

    JdbcTemplate 是Spring提供简化Jdbc开发模板工具类.为了更好的了解整个JdbcTemplate配置数据库连接池的过程,这篇文章不采用配置文件的方式,而是采用最基本的代码 的方式来写 ...

  8. cocos2d-x创建新项目模板

    1.起因 长期使用项目中自带的HelloWorldScene来创建模板工程,不知大家有木有感到厌烦? 我是个懒人,所以就弄了个新的模板工程.这样最起码可以不用每次都把HelloWorldScene删掉 ...

  9. Vue.jsbrowserify项目模板

    Vue.js——60分钟browserify项目模板快速入门   概述 在之前的一系列vue.js文章,我们都是用传统模式引用vue.js以及其他的js文件的,这在开发时会产生一些问题. 首先,这限定 ...

随机推荐

  1. python部分面试- 测试维度

    2. 软件测试的维度 1. 正确性:功能 正确 2. 健壮性: 意外的输入,不会崩溃 3. 性能: 大压力, 依然能工作 4. 可靠性: 长时间,不会崩溃 5. 易用性: 目标客户,都易用 6. 安全 ...

  2. GMA Round 1 逃亡

    传送门 逃亡 你在森林中,遇到了一只老虎.此时此刻,老虎在(0,0)的位置,你在(2,1)的位置. 你开始沿着一条林间小路逃亡,移动向量是$(\frac{\sqrt{6}}{2},\frac{\sqr ...

  3. .Net core下的配置设置(二)——Option

    我在前面的文章.Net core下的配置设置(一)——Configuration中介绍了.net core下配置文件的读取方法,在.net core中,直接从Configuration对象中读取的并不 ...

  4. python测试开发django-50.jquery发送ajax请求(get)

    前言 有时候,我们希望点击页面上的某个按钮后,不刷新整个页面,给后台发送一个请求过去,请求到数据后填充到html上,这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新.Ajax可以完美的 ...

  5. eclipse实现代码块折叠-类似于VS中的#region……#endregion

    背 景 刚才在写代码的时候,写了十几行可以说是重复的代码: 如果整个方法或类中代码多了,感觉它们太TM占地方了,给读者在阅读代码上造成很大的困难,于是想到能不能把他们“浓缩”成一行,脑子里第一个闪现出 ...

  6. golang dlv 远程调试

    因为不知道delvel 是如何设置源码的,本地编译的上传到服务器上,服务器要调试看不到源码,很是忧伤,所以干脆使用远程调试吧: 在服务器上 ps x|grep game 查找到gameserver的进 ...

  7. C# Parallel.Invoke 实现

    Parallel.Invoke应该是Parallel几个方法中最简单的一个了,我们来看看它的实现,为了方法大家理解,我尽量保留源码中的注释: public static class Parallel ...

  8. jsp中添加过滤器,实现校验用户身份

    我现在需要实现一个功能,就是用户登录前不允许访问系统,我使用的是jsp的过滤器来实现的. 先把filter过滤器的代码粘出来: package com.day8.filter; import java ...

  9. WPF 实现窗体拖动

    C# 实现代码 this.Loaded += (r, s) => { this.MouseDown += (x, y) => { if (y.LeftButton == MouseButt ...

  10. C# 之 批量插入数据到 SQLServer 中

    创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快.而如果存在索引的情况下,每次插入记录都会进行索引重建,这是非常耗性能的.如 ...