【问题标题】:Run a yeoman sub-generator using yeoman-environment使用 yeoman-environment 运行 yeoman 子生成器
【发布时间】:2018-07-18 17:55:13
【问题描述】:

当 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.

其次,如果我同时注册了应用程序和子生成器,并尝试运行子生成器:

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 调用时,子生成器会按预期工作。

我错过了什么?

【问题讨论】:

  • 你是如何运行这个文件的?你是怎么把它放到 bin 可运行文件中的?

标签: yeoman


【解决方案1】:

env.register() 不会在 yeoman generator-XXX 中搜索所有 generators/*/index.js,它只使用来自 package.jsonmain: 条目。

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

改变

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

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

【讨论】:

    猜你喜欢
    • 2016-06-14
    • 1970-01-01
    • 2015-08-05
    • 2015-06-26
    • 2014-05-19
    • 1970-01-01
    • 1970-01-01
    • 2014-06-27
    • 1970-01-01
    相关资源
    最近更新 更多