我有一个yeoman生成器用于我正在处理的遗留应用程序,它工作正常 .

我正在尝试开发一个小节点程序,直接通过 yo 调用它 . 按照Integrating Yeoman上的说明,我的程序如下所示:

var yeoman = require('yeoman-environment');
var GeneratorApp = require('./generators/app/index.js');
var env = yeoman.createEnv();
env.registerStub(GeneratorApp, 'mygen:app');
env.run('mygen:app', (err) => {
    if (err) {
        console.log(err.message);
    }
});

当我运行我的程序时,在生成器内部 sourceRoot() 相对于当前文件夹而不是安装生成器的位置设置:

sourceRoot() => c:\Users\Daaren\Documents\working\standard\applications\templates

代替:

sourceRoot() => C:\Projects\generator-mygen\generators\app\templates

当我将生成器作为 yo mygen 运行时返回 .

Yeoman的文档建议使用 getGeneratorsMeta() 将此信息包含在 resolved 属性中,但它不适用于使用 registerStub 注册的生成器(如明确说明的那样);我不想强迫用户注册我的生成器,只需通过节点程序使用它 .

当然我认为我可以通过使用启动程序的路径将附加参数传递给生成器来创建变通方法,但我知道Yeoman-generator是否有一些额外的设置来开箱即用 .