cookiecutter个性化心得

cookiecutter描述:

        通过cookiecutter解包项目模板文件,实现一个命令行生成项目。

个性化目标:

        0.自定义项目模板

        1.内置项目模板(无需再输入模板路径)

解决思路:

        0.解包参考项目模板与生成项目之间的关联

        1.实现自定义模板

        2.重构cookiecutter添加默认模板路径

        3.修改命令语句

遇到问题&问题分析or解决方法:

Q0:替换自定义模板后会出现生成后部分项目文件丢失的情况,或是提示缺少某文件导致生成项目失败。

R:cookiecutter字符串替换规则与jinja2等其他方法冲突。

A:经查阅文档,可用{% raw %}....{% endraw %}把冲突部位括起来。在这过程中,也遇到过CSS和JS文件产生类似冲突,由于部分js和CSS文件是又密又长不方便排查的原因,建议直接在文件开头和文件结尾括起来就可以了。

Q1:添加默认路径后仍然提示缺少template参数。

R:由于cookiecutter采用了@click.argument('template')的修饰方法。

A:屏蔽该语句就可以了,同时要注意两个地方。①带默认值参数应该放在不带默认值的参数后面;②为了实现通用路径,以便改造后的安装包在其他机器上也能使用,路径应用__file__方法,自动适配本机系统路径。

Q2:模板文件未能随安装包一起安装到系统包里。

R:需要在egg.info文件夹内的SOURCES.txt文本里添加模板文件里每一个文件的路径,或是在setup.py的packages参数里添加所有文件夹的路径。

A:自己写了一个遍历所有文件名的小程序,把路径记录到SOURCES.txt文本里。

Q3:替换了包名以后模板文件又未能安装到系统包里了。

R:由于替换了包名,导致原来的cookiecutter.egg.info这个文件夹被弃用,setup.py另外生成了一个新的egg.info文件夹,由于packages参数里没有设置自定义模板的路径,所以产生了上一个问题的情况。

A:跟上一个问题关联,要么就把cookiecutter.egg.info改成自定义名.egg.info,并在SOURCES.txt文本里做相应的修改,要么在packages里补全。

猜你喜欢

转载自blog.csdn.net/github_38854366/article/details/80283215