从带有选项的代码中调用yeoman生成器

时间:2018-12-16 19:37:29

标签: yeoman yeoman-generator

我通过用户交互创建了一个yeoman generator,可以在终端中调用它,例如(运行npm link之后):

yo mygenerator --name test --path /test/path --project testproject

现在,我想将此生成器包含在我的vscode扩展中。

当生成器作为package.json依赖项添加时,如何从我的打字稿代码中调用yo生成器?

类似(伪代码)

import { yo } from 'yeoman';
import mygenerator; // added as a dependency via package.json

const options = {
   name: 'test',
   path: '/test/path',
   project: 'testproject',
};
yo.exec(mygenerator, options, () => {
    console.log('yeoman finished')
});

这样可能吗?

1 个答案:

答案 0 :(得分:0)

这是一个解决方案:

const env = yeoman.createEnv();
const generatorPath = '../node_modules/generator-name/generators/app/index.js';
env.getByPath(generatorDir);
env.on('error', (err: any) => {
  // handle error
});
const options = {
  env,
  'option1': option1,
  'option2': option2,
};
try {
  await env.run('name', options);
} catch (err) {
  // handle error
}