如何在yeoman上下文中从`this.prompt`获取存储选项?

时间:2015-10-21 17:40:08

标签: javascript yeoman scaffolding yeoman-generator

基本上,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

3 个答案:

答案 0 :(得分:1)

没有公开的方式来访问存储的先前提示答案。

如果您想缓存某些数据并在以后访问它,请使用storage functionalitythis.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
  },
])