Cookiecutter: 更好的專案模板工具:(1)簡介及可用資源彙總
原文件地址: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
{ "full_name": "Tacey Wong", "email": "[email protected]", "project_name": "Complexity", "repo_name": "complexity", "project_short_description": "令人耳目一新的簡單的靜態網站生成器.", "release_date": "2019-03-10", "year": "2019", "version": "0.0.1" }
- 沒有你用·--no-input·來禁止,系統會提示你輸入:
cookiecutter.json cookiecutter.json
- 跨平臺支援
~/.cookiecutterrc
檔案:
default_context: full_name: "Tacey Wong" email: "[email protected]" 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-pypackage : @audreyr 終極Python包專案模板。
- cookiecutter-django : 一個具有Bootstrap 4、可定製使用者應用程式、啟動器模板、使用者註冊、celery設定等功能的Django專案模板。
- cookiecutter-pytest-plugin : 編寫pytest外掛的最小Cookiecutter模板,幫助你編寫更好的程式。
Cookiecutter模板分類
社群驅動的各類Cookiecutter模板(非Cookiecutter官方維護)
Python
- cookiecutter-pypackage : @audreyr 的終極Python包專案模板。
- cookiecutter-pipproject : pip可安裝專案的最小軟體包
- cookiecutter-pypackage-minimal : 一個最小的Python包模板。
- cookiecutter-lux-python : 一個Python樣板專案,旨在利用方便的Makefile工具和額外的輔助工具建立Python包。
- cookiecutter-flask :帶有 Bootstrap 3、啟動器模板和工作使用者註冊的Flask模板。
- cookiecutter-flask-2 : 一個更重的cookiecutter-flask,有更多的樣板,包括忘記密碼和Heroku整合功能
- cookiecutter-flask-foundation : 帶有快取、表單、sqlalchemy和單元測試的Flask模板。
- cookiecutter-flask-minimal : 最小但production就緒的Flask專案模板,除了Flask本身之外,沒有其他依賴。
- cookiecutter-flask-skeleton : Flask啟動專案。
- cookiecutter-bottle : 用於快速建立可重複使用的Bottle專案的cookiecutter模板。
- cookiecutter-openstack : OpenStack專案的模板。
- cookiecutter-docopt : Python命令列指令碼的模板,使用 docopt 進行引數解析。
- cookiecutter-quokka-module : 用於建立Quokka Flask CMS藍圖模組的模板。
- cookiecutter-kivy :基於kivy python-framework構建的NUI應用程式模板。
- cookiedozer : Python Kivy應用程式的模板,已準備好使用Buildozer部署到Android裝置。
- cookiecutter-pylibrary : 一個旨在快速開始進行良好的測試和打包的複雜模板,(Tox,Pytest,Travis-CI,Coveralls,AppVeyor,Sphinx docs,isort,轉換,打包、檢查等工作配置)。
- cookiecutter-pyvanguard : 用於尖端Python開發的模板。 invoke 、pytest、bumpversion和Python 2/3相容性。
- Python-iOS-template : 用於建立在iOS裝置上執行的Python專案模板。
- Python-Android-template : 用於建立在Android裝置上執行的Python專案模板。
- cookiecutter-tryton 用於建立基本和外部Tryton模組的模板。
- cookiecutter-tryton-fulfilio : 用於建立tryton模組的模板。
- cookiecutter-pytest-plugin : 用於創作 pytest 外掛的最小Cookiecutter模板,可幫助您編寫更好的程式。
- cookiecutter-tox-plugin : 編寫 tox 外掛的最小Cookiecutter模板,用於更改或擴充套件測試自動化的行為。
- cookiecutter-tapioca : 用於構建基於Web API包裝器(客戶端)的[tapioca-wrapper](https://github.com/vintasoftware/tapioca-wrapper)的模板。
- cookiecutter-muffin : 帶有Bootstrap 3,啟動器模板和工作使用者註冊的Muffin模板。
- cookiecutter-octoprint-plugin : 用於構建 OctoPrint .外掛的模板
- cookiecutter-funkload-friendly : funkload-friendly 專案的Cookiecutter模板。
- cookiecutter-python-app : 用於建立具有子命令、日誌記錄、YAML配置、pytest測試和Virtualenv部署的Python CLI應用程式的模板。
- morepath-cookiecutter :超強web微框架Morepath的Cookiecutter模板,。
- Springerle/hovercraft-slides : 新 Hovercraft! 展現專案模板(reStructuredText中嵌入
impress.js
幻燈片) - cookiecutter-snakemake-analysis-pipeline : 一種輕鬆設定 Snakemake 分析管道的方法。
- cookiecutter-py3tkinter : Python 3 Tkinter應用程式gui的模板。
- cookiecutter-pyqt5 : 預構建的PyQt4 GUI模板,具有日誌記錄支援、用於測試和分離ui和工作元件的結構。
- cookiecutter-pyqt4 : A prebuilt PyQt4 GUI template with a logging support, structure for tests and separation of ui and worker components.
- cookiecutter-xontrib : 用於構建xontribs的模板,a.k.a xonsh 貢獻
- cookiecutter-conda-python : 用於構建Conda Python包的模板
- cookiecutter-pypackage-rust-cross-platform-publish : 包含Rust二進位制模組的Python wheel 模板,支援在Windows,OSX和Linux上釋出。
- cookiecutter-telegram-bot : 一個帶有基於CherryPy webhook的Telegram機器人模板專案。
- python-project-template : 一個用於Python專案的模板,具有複雜的釋出自動化功能。
- cookiecutter-anyblok-project : 基於Anyblok的專案模板。
- cookiecutter-python-cli :用於使用“click”建立Python CLI應用程式的cookiecutter模板
Python-Django
- cookiecutter-django : 帶有Bootstrap 4的前沿Django專案模板,可自定義的使用者應用程式,入門模板,使用者註冊,celery設定等等。
- cookiecutter-django-rest : 用於為移動和Web應用程式建立REST api。
- cookiecutter-simple-django : 快速建立可重用Django專案的cookiecutter 模板
- django-docker-bootstrap : Djangodocker開發/生產環境,並集成了 Postgres, NodeJS(React), Nginx, uWSGI.
- cookiecutter-djangopackage :用於建立可重用的第三方PyPI友好Django應用程式的cookicutter模板。 用教程格式編寫文件
- cookiecutter-django-cms : Django CMS的模板,帶有簡單的Bootstrap 3模板。 它具有快速啟動和部署文件。
- cookiecutter-django-crud : 用於圍繞工廠模式和測試的模型建立帶有CRUD樣板的Django應用程式。
- cookiecutter-django-lborgav :Django專案的另一個cookiecutter模板,帶有Bootstrap 3和FontAwesome 4
- cookiecutter-django-paas : 準備在像Heroku,OpenShift等PAAS平臺中使用的Django模板
- cookiecutter-django-rest-framework : 用於建立可重用Django REST框架包的模板。
- cookiecutter-django-aws-eb : 在AWS Elastic Beanstalk上啟動並執行Django。
- cookiecutter-wagtail : 基於 Wagtail CMS的網站模板
- wagtail-cookiecutter-foundation : Wagtail CMS專案的完整模板,帶有 Zurb Foundation 6,ansible資源調配和部署,使用bower進行前端相關性管理,模組化的應用程式,使您的網站啟動和執行照片畫廊,RSS流等。
- django-starter : 包含vagrant和provisioning指令碼的Django模板- 靈感來自12factor應用程式和cookiecutter-django。
- cookiecutter-django-gulp : 在Django專案中整合前端開發工具的Cookiecutter模板
- wagtail-starter-kit : 配有wagtail,django佈局,vagrant,配置指令碼,前端構建系統等等的cookiecutter模板。
- cookiecutter-django-herokuapp : 一個為Heroku python3優化的Django 1.7+模板。
- cookiecutter-simple-django-cn :一個簡單的Django中文模板。
- cc_django_ember_app : 用於使用Django和EmberJS建立應用程式
- cc_project_app_drf : 用於基於“project app”專案體系結構建立REST api
- cc_project_app_full_with_hooks : 用於基於“project app”專案體系結構建立Django專案
- cc-automated-drf-template : 模板+指令碼,根據模型檔案作為輸入自動建立包含序列化程式,檢視,URL和管理檔案的Django REST專案。
- cookiecutter-django-foundation : cookiecutter-django 分支, 基於 Zurb Foundation 6前端框架。
- cookiecutter-django-ansible : 用於快速啟動ansible專案,以便為您的* cookiecutter-django *應用程式提供伺服器的框架
- wemake-django-template : 前沿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專案模板的元模板。
- cookiecutter-template : 用於建立一個Cookiecutter模板
Ansible
- cookiecutter-molecule : 按照最佳實踐建立Create Molecule 角色, 利用Test-kitchen,Docker和InSpec實現已經實施的測試基礎架構。 Molecule , Docker and Testinfra.
- cookiecutter-ansible-role : 用於建立ansible角色的模板。 忘記檔案建立,專注於操作。
- cookiecutter-ansible-role-ci : 按照最佳實踐建立Ansible角色,利用Test-kitchen,Docker和InSpec實現已經實施的測試基礎架構。
Git
- cookiecutter-git : Git repo專案模板
C
- bootstrap.c : 用C語言編寫的帶有autotools的簡單專案模板。
- cookiecutter-avr : avr開發的模板。
C++
- BoilerplatePP : 一個簡單的cmake模板,對用C ++編寫的專案進行單元測試。
- cookiecutter-dpf-effect : DISTRHO外掛框架(DPF)的音訊外掛專案模板
- cookiecutter-dpf-audiotk : 一個音訊外掛專案模板,用於發行版外掛框架(DPF)和音訊工具包(ATK) DSP庫
- cookiecutter-kata-gtest : 使用Google Test框架的C ++測試驅動開發katas模板。
- cookiecutter-kata-cpputest : 使用CppUTest框架的C ++測試驅動開發katas的模板。
C#
- cookiecutter-csharp-objc-binding : 生成用於繫結Objective-C靜態庫的C#繫結專案的cookircutter模板。
Common Lisp
- cookiecutter-cl-project : 帶有bootstrap指令碼和Slime整合的Common Lisp專案cookiecutter模板,
Elm
- cookiecutter-elm : 基於Elm帶有html樣例的cookiecutter模板。
Golang
- cookiecutter-golang : 根據最佳實踐建立基golang新專案的模板
Java
- cookiecutter-java : 使用gradle的基本java應用程式設定的cookiecutter模板。
- cookiecutter-spring-boot : 標準java spring boot gradle應用程式的Cookiecutter模板。
- cookiecutter-android :基於Gradle的Android專案Cookiecutter模板。
JS
- cookiecutter-es6-boilerplate :S6中的前端專案cookiecutter模板
- cookiecutter-webpack : Webpack 2專案的模板,包括熱重新載入,babel es6模組和反應。
- cookiecutter-jquery :一個基於jQuery Boilerplate的jQuery外掛專案模板。
- cookiecutter-jswidget : 為多個JS打包系統建立一個通用的前端非jQuery JS小部件的專案模板。
- cookiecutter-component : Component JS 包模板
- cookiecutter-tampermonkey : TamperMonkey瀏覽器指令碼的模板。
- cookiecutter-es6-package : 使用ES6通過babel編寫nodejs包的模板。
- cookiecutter-angular2 : 帶有typescript應用程式的模組化angular2模板。
- CICADA : 自動為AngularJS前端建立列表/細節控制器和片段,以連線到DRF後端的模板和指令碼。 與 cc-automated-drf-template 配合的很好。
Kotlin
- cookiecutter-kotlin-gradle : 基於Gradle的Kotlin專案簡單模板。
LaTeX/XeTeX
- pandoc-talk :用於與pandoc和XeTeX進行對接的cookiecutter模板。
- cookiecutter-latex-article : 針對學術界使用的LaTeX模板
- cookiecutter-beamer : LaTeX Beamer展示模板
PHP
- cookiecutter-mediawiki-extension : MediaWiki擴充套件的模板。
Sublime Text
- cookiecutter-sublime-text-3-plugin : Sublime Text 3 外掛模板, 包括自定義設定、命令、鍵繫結和主選單
- sublime-snippet-package-template : 包含片段型Sublime Text包的模板。
Berkshelf-Vagrant
- slim-berkshelf-vagrant : 與 vagrant/berkshelf cookbooks保持一致的cookbook簡單模板
HTML
- cookiecutter-complexity :一個使用Bootstrap 3的複雜靜態站點cookiecutter模板。
- cookiecutter-reveal.js : reveal.js簡報的cookiecutter模板。
-
cookiecutter-tumblr-theme : 使用GruntJS作為連線工具的Tumblr主題專案的cookiecutter模板。
Scala
- cookiecutter-scala :帶有幾個庫的簡單scala hello world應用程式cookiecutter模板
-
cookiecutter-scala-spark : 用Scala編寫的Apache Spark應用程式的cookiecutter模板。
6502 Assembly
-
cookiecutter-atari2600 : Atari2600專案的cookiecutter模板。
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)
持續交付
- painless-continuous-delivery : 用於包含持續交付的軟體開發設定cookiecutter模板。支援Python (Django, Flask), 實驗性支援 PHP 。
- cookiecutter-devenv : 用於將開發和ci環境新增到現有專案的模板。
雲工具
- cookiecutter-tf-module : 用於構建一致Terraform模組的Cookiecutter模板。
Tornado
- cookiecutter-tornado : 建立Tornado專案的Cookiecutter模板
其他
- cookiecutter-awesome : 建立[awesome](https://github.com/sindresorhus/awesome)列表的Cookiecutter模板。
- cookiecutter_dotfile : 由stow管理的dotfiles資料夾的模板。
- cookiecutter-raml : RAML v1.0 API文件的模板。
與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生成器,帶有一些附加元件和整合。