我们有文件cookiecutter.json
,它定义了模板的默认上下文。我想通过命令标志指定类似的东西:
cookiecutter --no-input --context my-context.json <cookiecutter-template>
这样可以使用相同的模板生成不同的项目,而无需在输入提示上手动输入数据。有一种解决方法可以实现这一目标:
cookiecutter.json
这不太理想,因为它需要修改存储库,不允许独立存储上下文文件,并且不允许使用相同的模板来轻松创建不同的项目。
有没有办法在命令行上为cookiecutter指定上下文?
答案 0 :(得分:0)
从我所看到的,目前没有按照你希望的方式使用命令行标志的方法。
然而,基于我对这个完全相同问题的研究,有两种主要途径可以解决这个问题,每种方法或多或少都适合具体情况。
如果您希望在多个项目中使用标准的,通常是个人的上下文值,则可以选择添加用户特定的配置。
您似乎可以在主目录中的.cookiecutterrc
文件中指定一些默认上下文设置。 (可以找到当前文档here)。这最适用于电子邮件地址,全名,github帐户名等相当静态的内容。
配置文件的格式为yaml,示例结构如下:
default_context:
full_name: "Gavin Cooper"
email: "xxxxxx@xxxxx.com"
github_username: "gjcooper"
我认为这依赖于诸如此类字段在大多数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)
我能验证的这个解决方案对我有用。