1

我们有文件cookiecutter.json,它定义了模板的默认上下文。我想通过命令标志指定如下内容:

cookiecutter --no-input --context my-context.json <cookiecutter-template>

这样同一个模板就可以用来生成不同的项目,而无需在输入提示上手动输入数据。有一种解决方法可以实现这一点:

  1. 在本地克隆模板存储库
  2. 修改cookiecutter.json模板仓库中的
  3. 将本地克隆指定为模板,而不是 github 克隆

这不太理想,因为它需要修改存储库,不允许独立存储上下文文件,并且不允许使用相同的模板轻松创建不同的项目。

有没有办法在命令行上指定 cookiecutter 的上下文?

4

1 回答 1

0

不(不完全是)

从我所见,目前没有以您希望的方式使用命令行标志的方法。

然而,根据我对这个完全相同的问题的研究,有两种主要途径可以解决这个问题,每种途径或多或少都取决于具体情况。

标准/个人背景值

如果您有标准的,通常是您希望在多个项目中使用的个人上下文值,则可以选择添加用户特定的配置。

您似乎可以.cookiecutterrc在主目录中的文件中指定一些默认上下文设置。(当前文档可以在这里找到)。这最适合用于诸如电子邮件地址、全名、github 帐户名等相当静态的内容。

配置文件的格式为 yaml,示例结构如下:

default_context:
    full_name: "Gavin Cooper"
    email: "xxxxxx@xxxxx.com"
    github_username: "gjcooper"

我假设这依赖于诸如 this 在大多数 cookiecutter 包中被赋予标准名称的字段。

项目特定的上下文值

此解决方案适用于当您有一个项目管理软件或其他脚本时,您希望将项目特定值(即 app_name)生成为 cookiecutter json 格式,然后在无需用户输入的情况下自动生成项目目录结构。

这需要编写一个非常短的 python 脚本来挂钩 cookiecutter 内部,但使用起来很简单:

from cookiecutter.main import cookiecutter
import json

with open('project_context.json') as jfile:
    mycontext = json.load(jfile)

cookiecutter('<local or remote cookiecutter template file>',
             extra_context=mycontext,
             no_input=True)

我可以验证的这个解决方案对我有用。

于 2016-12-14T05:38:26.307 回答