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生成器,帶有一些附加組件和集成。
相關文章
相關標籤/搜索