基本上,yeoman强迫你向开发人员询问你需要的一切。虽然,这是一件好事,你可以存储一些东西,但在将来的运行中,这些东西将自动完成给开发人员。关键是我不想问开发人员他是否已回答过这些问题。
这里是基本的yeoman生成器的示例(SELECT VALUE
FROM NLS_DATABASE_PARAMETERS
WHERE parameter = 'NLS_DATE_FORMAT';
将被保存并稍后自动完成):
name
问题是如何从yeoman上下文中的var yeoman = require('yeoman-generator');
module.exports = yeoman.generators.Base.extend({
init: function () {
var cb = this.async();
this.prompt([{
name: 'name',
message: 'your name:',
store: true,
}, {
name: 'moduleName',
message: 'module name:'
}], function (props) {
console.log(
props.name, // developer’s name
props.moduleName // module’s name
)
}.bind(this));
},
}
});
中获取存储选项来做这样的smth:
this.prompt
答案 0 :(得分:1)
没有公开的方式来访问存储的先前提示答案。
如果您想缓存某些数据并在以后访问它,请使用storage functionality(this.config
)
FWIW,提示缓存存储在私有this._globalConfig
中。我为了完整性而添加了这个细节,你可能不应该使用它。
答案 1 :(得分:0)
您可以添加 config.js ,它将存储和读取用户主目录中的信息作为 config.json 文件,稍后该应用可以读取此文件可以用作默认值。
{
name: 'authorName',
message: 'What\'s your name?',
'default': self.defaultAuthorName
}
查看开发人员使用 config.js 文件的https://www.npmjs.com/package/generator-yo-wordpress。
答案 2 :(得分:0)
您可以将默认值用作函数,其中第一个参数是预先存储的答案:
const answers = await this.prompt([
{
type: 'input',
name: 'projectName',
message: 'Your project id',
default: this.appname,
store: true
},
{
type: 'input',
name: 'projectTitle',
message: 'Your project title',
default: ({ projectName }) => projectName
},
])