Я собираю генератор Yeoman и не понимаю, как работает параметр options composeWith(). Моя цель - передать пользовательский ввод от основной генераторной подсказки к подгенераторам, и я думал, что это способ сделать это.
Мой основной генератор выглядит примерно так:
prompting: function () {
var done = this.async();
var prompts = [
{
type : 'input',
name : 'name',
message : 'What is the name of your project?',
default : this.appname // Default to current folder name
}
];
this.prompt(prompts, function (answers) {
this.composeWith('app:subgenerator', {
options: {
name: answers.name;
}
},
{
local: require.resolve('generator-angular/app')
});
done();
}.bind(this)
)
}
Я попытался в моем подгенераторе установить локальную переменную, используя аргументы в конструкторе (потому что я предположил, что где будут варианты):
module.exports = generators.Base.extend({
constructor: function () {
generators.Base.apply(this, arguments);
this.foo = arguments.options.name;
}
}
Но это не сработало. Я попробовал консоль регистрировать переменную аргументов, и она показывает, что параметры - это объект, но он кажется пустым.
Является ли это тем, как я могу передавать пользовательский ввод через генератор в другой, или есть ли другой способ сделать это?