cookiecutter工具

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 · PyPI官网

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 [email protected]: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: "[email protected]"
  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": "[email protected]",
  "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"

猜你喜欢

转载自blog.csdn.net/fbbqt/article/details/127748263