首先,我发现使用yeoman的this.template()而不是使用来自包含的mem-fs-editor实例的this.fs.copy()/ this.fs.copyTpl()更容易,但是YMMV
无论如何,您都需要在生成器中设置this.sourceRoot(‘rel / path / to / source / root’)和this.destinationRoot(‘rel / path / to / dest / root’),然后再尝试编写确保您设置了正确的模板和目标上下文. See yeoman’s getting started guide on interacting with the files system from more information. this.destinationRoot()应该相对于当前项目的根目录定义(我在下面解释),而this.sourceRoot()应该相对于生成器文件的根目录定义.
您还必须考虑到yeoman会尝试在命令行中找出您当前所在的任何应用程序的根目录.它通过向上导航(即/ home / diegoaguilar / koala-> / home / diegoaguilar /)来完成此操作,直到找到.yo-rc.json文件.然后,Yeoman将最近的.yo-rc.json目录保存到您运行命令的位置,将其作为项目的预期根目录.
您可能需要删除/移动/重命名/home/diegoaguilar/.yo-rc.json(如果存在).然后,您可以创建希望项目驻留在其中的目录,并在其中运行生成器.这看起来像
/home/diegoaguilar/ $> mkdir koala
/home/diegoaguilar/ $> cd koala
/home/diegoaguilar/koala/ $> yo koala
如果您想要或需要将/home/diegoaguilar/.yo-rc.json保留在此处,则应在相对于/ home / diegoaguilar /的生成器中设置this.destinationRoot(),以便写入/ home / diegoaguilar /考拉/您将使用this.destinationRoot(‘koala’).