我可以根据cookiecutter.json中变量的值使文件成为可选文件吗

nic*_*har 5 python cookiecutter

我想有一个文件,可以选择在我的python cookiecutter项目中添加。

一个例子是在cookiecutter.json中具有变量

{"settings_file": true}
Run Code Online (Sandbox Code Playgroud)

这将settings.py在目录的根目录下创建一个文件(可能包含一些内容)。

cookiecutter是否提供执行此操作的选项?还是应该使用后期处理挂钩来编写创建文件的脚本(我觉得这不是最优雅的解决方案)。

par*_*mor 6

根据官方文档,您可以使用 post-generate hook script ( hooks/post_gen_project.py)

(复制这里的片段供浏览者参考)

import os

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)
Run Code Online (Sandbox Code Playgroud)


nic*_*har 5

如果有人遇到它,我将回答我自己的问题:它尚未实现为项目的功能,请参见此处的增强功能票:https : //github.com/audreyr/cookiecutter/issues/127

我想出的“最小丑陋”的解决方案是每次都创建文件,并在发布钩子期间清理它们(您也可以在发布钩子期间创建它们,但会失去cookiecutter模板的优势)