Yeoman 使用 args 通过代码调用生成器
Yeoman invoke generator by code with args
我有带子生成器的 yeoman 生成器。
我需要通过代码调用子生成器,我使用下面的代码,我看到子生成器被调用,我在终端中得到了问题。
文档:
https://yeoman.io/authoring/integrating-yeoman.html
var yeoman = require('yeoman-environment');
var env = yeoman.createEnv();
env.lookup(function () {
env.run('main:sub',err => {
console.log('done' ,err);
});
});
子生成器只有一个问题
prompting() {
const prompts = [
{
name: "app",
message: "which app to generate?",
type: "input",
default: this.props.app,
},
];
...
我想静静地调用它,这意味着通过代码传递 app
问题的值而不是使用终端 我尝试了这个不起作用,(我在终端看到了问题)
env.lookup(function () {
env.run('main:sub',{"app":"nodejs"}, err => {
console.log('done' ,err);
});
});
也试过这个不行
env.lookup(function () {
env.run('main:sub --app nodejs', err => {
console.log('done' ,err);
});
});
我该怎么做?使用代码传递值(可能就像在单元测试中完成的一样,但这段代码不是单元测试......当终端未被调用时)
从文档我不确定如何传递值
https://yeoman.io/authoring/integrating-yeoman.html
我也找到了这个但是不太明白如何使用它来将参数传递给生成器
http://yeoman.github.io/environment/Environment.html#.lookupGenerator
可能吗?
你可以这样做:
env.lookup(function () {
env.run('main:sub',{"app":"nodejs"}, err => {
console.log('done' ,err);
});
});
在 sub
子生成器中,您可以通过 this.options.app
.
找到值
要禁用问题提示,在 Question Object 中定义 when
字段,如下所示:
prompting() {
const prompts = [
{
name: "app",
message: "which app to generate?",
type: "input",
default: this.props.app,
when: !this.options.app
},
];
. . .
return this.prompt(prompts).then((props) => {
this.props = props;
this.props.app = this.options.app || this.props.app;
});
}
我有带子生成器的 yeoman 生成器。 我需要通过代码调用子生成器,我使用下面的代码,我看到子生成器被调用,我在终端中得到了问题。
文档: https://yeoman.io/authoring/integrating-yeoman.html
var yeoman = require('yeoman-environment');
var env = yeoman.createEnv();
env.lookup(function () {
env.run('main:sub',err => {
console.log('done' ,err);
});
});
子生成器只有一个问题
prompting() {
const prompts = [
{
name: "app",
message: "which app to generate?",
type: "input",
default: this.props.app,
},
];
...
我想静静地调用它,这意味着通过代码传递 app
问题的值而不是使用终端 我尝试了这个不起作用,(我在终端看到了问题)
env.lookup(function () {
env.run('main:sub',{"app":"nodejs"}, err => {
console.log('done' ,err);
});
});
也试过这个不行
env.lookup(function () {
env.run('main:sub --app nodejs', err => {
console.log('done' ,err);
});
});
我该怎么做?使用代码传递值(可能就像在单元测试中完成的一样,但这段代码不是单元测试......当终端未被调用时) 从文档我不确定如何传递值 https://yeoman.io/authoring/integrating-yeoman.html
我也找到了这个但是不太明白如何使用它来将参数传递给生成器 http://yeoman.github.io/environment/Environment.html#.lookupGenerator 可能吗?
你可以这样做:
env.lookup(function () {
env.run('main:sub',{"app":"nodejs"}, err => {
console.log('done' ,err);
});
});
在 sub
子生成器中,您可以通过 this.options.app
.
要禁用问题提示,在 Question Object 中定义 when
字段,如下所示:
prompting() {
const prompts = [
{
name: "app",
message: "which app to generate?",
type: "input",
default: this.props.app,
when: !this.options.app
},
];
. . .
return this.prompt(prompts).then((props) => {
this.props = props;
this.props.app = this.options.app || this.props.app;
});
}