我想在我的 python cookiecutter 项目中选择添加一个文件。
一个例子是在 cookiecutter.json 有变量
{"settings_file": true}
这将settings.py
在我的目录的根目录下创建一个文件(可能包含一些内容)。
cookiecutter 是否提供执行此操作的选项?或者我应该使用后处理钩子来编写一个创建文件的脚本(我觉得这不是最优雅的解决方案)。
我想在我的 python cookiecutter 项目中选择添加一个文件。
一个例子是在 cookiecutter.json 有变量
{"settings_file": true}
这将settings.py
在我的目录的根目录下创建一个文件(可能包含一些内容)。
cookiecutter 是否提供执行此操作的选项?或者我应该使用后处理钩子来编写一个创建文件的脚本(我觉得这不是最优雅的解决方案)。
我将回答我自己的问题,以防有人遇到它:它尚未作为项目的功能实现,请参阅此处的增强票:https ://github.com/audreyr/cookiecutter/issues/127
我想出的“最不难看”的解决方案是每次都创建文件,并在 post hook 期间清理它们(您也可以在 post hook 期间创建它们,但会失去 cookiecutter 模板的优势)
根据官方文档,您可以使用生成后挂钩脚本 ( hooks/post_gen_project.py
)
(此处为那些略读的人复制片段)
import os
import sys
REMOVE_PATHS = [
'{% if cookiecutter.packaging != "pip" %} requirements.txt {% endif %}',
'{% if cookiecutter.packaging != "poetry" %} poetry.lock {% endif %}',
]
for path in REMOVE_PATHS:
path = path.strip()
if path and os.path.exists(path):
if os.path.isdir(path):
os.rmdir(path)
else:
os.unlink(path)