当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调用子生成器时,子生成器会按预期工作。
我遗漏了什么?
发布于 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');
至
env.lookup(() => { folder
env.run('mine:client', {}, err => { console.log('done'); });
});https://stackoverflow.com/questions/48680805
复制相似问题