我通过用户交互创建了一个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')
});
这样可能吗?
答案 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
}