使用自耕农环境运行yeoman子发电机

时间:2018-02-08 08:25:29

标签: yeoman

当yeoman以嵌入的形式运行时,我无法运行子生成器。

integrating yeoman in other tools的文档提供了此示例:

var yeoman = require('yeoman-environment');
var env = yeoman.createEnv();
env.register(require.resolve('generator-mine'), 'mine:app');
env.run('mine:app', done);

这也适用于我的生成器mine。 但是,当我尝试使用相同的代码运行任何子生成器(mine:client)时,它无法正常工作。有两种失败模式。

首先,如果我只注册应用程序生成器,并尝试运行子生成器:

var yeoman = require('yeoman-environment');
var env = yeoman.createEnv();
env.register(require.resolve('generator-mine'), 'mine:app');
env.run('mine:client', done);

我明白了:

You don't seem to have a generator with the name “mine:client” installed.

其次,如果我同时注册app和子生成器,并尝试运行子生成器:

var yeoman = require('yeoman-environment');
var env = yeoman.createEnv();
env.register(require.resolve('generator-mine'), 'mine:app');
env.register(require.resolve('generator-mine'), 'mine:client');
env.run('mine:client', done);

然后没有错误消息。但是,运行mine:app生成器而不是所需的mine:client生成器。

请记住,当直接从shell调用时,子生成器按预期工作。

我错过了什么?

1 个答案:

答案 0 :(得分:2)

env.register()没有搜索yeoman generator-XXX所有generators/*/index.js它只使用main:中的package.json条目。

env.lookup()扫描generator- *的节点安装并注册它找到的所有生成器。

更改

env.register(require.resolve('generator-mine'), 'mine:client');

env.lookup(() => {  folder
  env.run('mine:client', {}, err => { console.log('done'); });
});
相关问题