cookiecutter · PyPI官网
一、安装
1、通过python包管理工具
$pip install cookiecutter
如果使用的是 conda,想使用conda
安装
$conda config --add channels conda-forge
$conda install cookiecutter
添加环境变量:
通常path在UNIX和macOS上是 ~/.local/,在Windows上是 %APPDATA%\Python。
UNIX 和 macOS
对于 bash shell,将以下内容添加到 .bash_profile 文件
(针对其他 shell 进行调整):
# Add ~/.local/ to PATH
$export PATH=$HOME/.local/bin:$PATH
$source ~/.bash_profile #重新加载
Windows
在计算机上搜索“环境变量”(在Windows 10上,它位于“系统属性–>高级”下)
示例段应该类似于 %APPDATA%\Python\Pyth3x\Scripts
需要重新启动命令行加载环境变量。有关完整详细信息,请参阅配置 Python( Windows )。
注意:要保证Python在你的系统PATH路径下,同时保证
bin
目录在你的系统PATH路径下。特别提醒,anaconda安装的Python,其安装的python执行文件默认不在系统路径下,一般在$ANACONDA/bin,请将其放置在系统路径下。
2、通过系统的包管理
ubuntu
$sudo apt install cookiecutter
mac os
$brew install cookiecutter
备用安装
Pipx(Linux、OSX 和 Windows):
$pipx install cookiecutter
0.7.0及以后的版本中:
1、Cookiecutter 在生成项目后不再删除克隆的 repo。
2、克隆的 repos 保存到 ~/.cookiecutters/ 中。
3、可以选择创建一个 ~/.cookiecutterrc 配置文件。
cookiecutter升级:
python3 -m pip install --upgrade cookiecutter
二、使用
cookiecutter.json中定义的变量在模板中要使用 {{cookiecutter.repo_name}}、{{cookiecutter.service_name}}、{{cookiecutter.file_name}}.py 进行替换填写,以便于生成项目的时候进行渲染。如果在命令行的参数使用 -o 选项指定,项目则生成到当前目录或目标目录
{
"repo_name": "helloworld",
"file_name": "cutter",
"service_name": "register"
}
1、已有模板
1、对于远程的模板:
# 直接使用Github上的远程模板创建项目
$ cookiecutter https://github.com/audreyfeldroy/cookiecutter-pypackage
# 为了简洁起见,GitHub上的repo可以使用“gh”前缀
$ cookiecutter gh:audreyfeldroy/cookiecutter-pypackage
2、使用本地模板:
# 在当前工作目录中, 从本地 cookiecutter-package/ template(模板)创建项目
# 示例:从GitHub上git clone一个项目模板到本地,然后根据自己需要对项目模板进行修改
1、首先,克隆一个 Cookiecutter 项目模板到本地:
$ git clone git@github.com:audreyr/cookiecutter-pypackage.git
2、修改cookiecutter.json中定义的变量
3、cookiecutter.json中定义的变量在模板中要使用 {{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}.py 形式进行替换填写
#您可能还想创建一个 repo,将其命名为不同的名称,并将其作为自己的新 Cookiecutter 项目模板进行推送,以方便将来使用。
4、然后从项目模板生成您的项目:
# 唯一的参数是输入目录。(输出目录是通过渲染生成的,不能和输入目录相同。)
$ cookiecutter cookiecutter-pypackage/
3、从Python使用
from cookiecutter.main import cookiecutter
# 从 cookiecutter-pypackage/ template 创建项目
cookiecutter('cookiecutter-pypackage/')
# 从 cookiecutter-pypackage.git repo template 创建项目
cookiecutter('https://github.com/audreyfeldroy/cookiecutter-pypackage.git')
如果不使用
--no-input参数
, 将提示输入:
- 提示在
cookiecutter.json中填写的key
- 默认的是
cookiecutter.json中填写的value
- 提示按顺序显示
~/.cookiecutterrc文件支持跨平台
default_context: full_name: "Audrey Roy Greenfeld" email: "audreyr@gmail.com" github_username: "audreyfeldroy" cookiecutters_dir: "~/.cookiecutters/"
Cookiecutter(克隆的 Cookiecutter项目模板)默认放在~/.cookiecutters/中,或者指定cookiecutters_dir目录。
如果您已经将cookiecutter克隆到~/.cookiecutters/中,您可以通过目录名引用它:
# Clone cookiecutter-pypackage $ cookiecutter gh:audreyfeldroy/cookiecutter-pypackage # Now you can use the already cloned cookiecutter by name $ cookiecutter cookiecutter-pypackage
默认上下文:指定要在生成项目时用作默认值的键/值对。
使用命令行参数注入额外的上下文:
直接访问Cookie执行器API允许注入额外的上下文。
本地项目的路径可以指定为绝对路径或相对路径。
如果使用-o选项指定,项目则生成到当前目录或目标目录
cookiecutter --no-input gh:msabramo/cookiecutter-supervisor program_name = foobar startsecs = 10
2、创建模板
-
支持无限级别的目录嵌套。
-
模板100%是用Jinja2完成的。
-
目录名和文件名都可以模板化。例如:
{{cookiecutter.repo_name}} {{cookiecutter.service_name}} {{cookiecutter.file_name}}.py
- 在 cookiecutter.json 文件中简单的定义模板变量。例如:
{
"full_name": "Audrey Roy Greenfeld",
"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"
}
3、cookiecutter目录中的结构
Cookiecutter 1.7 中的新功能
Cookiecutter 引入了在一个存储库或 zip 文件中组织多个模板的能力,并通过目录将它们分开。这允许对一般文件使用符号链接。这是一个演示此功能的示例存储库:
https://github.com/user/repo-name.git
├── directory1-name/
| ├── {{cookiecutter.project_slug}}/
| └── cookiecutter.json
└── directory2-name/
├── {{cookiecutter.project_slug}}/
└── cookiecutter.json
要使用子目录中的一个模板,请使用 --directory 选项
cookiecutter https://github.com/user/repo-name.git --directory="directory1-name"