首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用yeoman-environment运行yeoman子生成器

使用yeoman-environment运行yeoman子生成器
EN

Stack Overflow用户
提问于 2018-02-08 16:25:29
回答 1查看 546关注 0票数 4

当yeoman以嵌入式形式运行时,我在运行子生成器时遇到了问题。

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

代码语言:javascript
复制
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)时,它不能正常工作。有两种故障模式。

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

代码语言:javascript
复制
var yeoman = require('yeoman-environment');
var env = yeoman.createEnv();
env.register(require.resolve('generator-mine'), 'mine:app');
env.run('mine:client', done);

我得到了:

代码语言:javascript
复制
You don't seem to have a generator with the name “mine:client” installed.

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

代码语言:javascript
复制
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调用子生成器时,子生成器会按预期工作。

我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-16 23:43:49

env.register()不会在yeoman生成器-XXX中搜索所有的generators/*/index.js,它只使用package.json中的main:条目。

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

变化

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

代码语言:javascript
复制
env.lookup(() => {  folder
  env.run('mine:client', {}, err => { console.log('done'); });
});
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48680805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档