如何从 yeoman 上下文中的 `this.prompt` 获取存储的选项?
how to get stored options from `this.prompt` inside yeoman context?
基本上,yeoman 会强制您向开发人员询问您需要的一切。虽然,这是一件好事,你可以存储一些东西,在未来的运行中,这些东西将为开发人员自动完成。关键是我不想问开发人员他是否已经回答了那个问题。
这里是基本的 yeoman 生成器示例(name
将被保存并稍后自动完成):
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));
},
}
});
问题是如何在 yeoman 上下文中从 this.prompt
中获取存储的选项来执行以下操作:
this.prompt([!this.name.stored && {
name: 'name', // so after first run this will never be asked again
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));
无法 public 访问存储的先前提示答案。
如果你想缓存一些数据并在以后访问它,那么使用 storage functionality (this.config
)
FWIW,提示缓存存储在私有 this._globalConfig
中。我添加这个细节是为了完整性,你可能不应该使用它。
您可以添加一个 config.js 来存储和读取用户主目录中的信息作为 config.json 文件,以后应用程序可以读取这个可以用作默认文件的文件。
{
name: 'authorName',
message: 'What\'s your name?',
'default': self.defaultAuthorName
}
查看 https://www.npmjs.com/package/generator-yo-wordpress 开发人员在何处使用 config.js 文件。
您可以将默认值用作函数,其中第一个参数是先前存储的答案:
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
},
])
基本上,yeoman 会强制您向开发人员询问您需要的一切。虽然,这是一件好事,你可以存储一些东西,在未来的运行中,这些东西将为开发人员自动完成。关键是我不想问开发人员他是否已经回答了那个问题。
这里是基本的 yeoman 生成器示例(name
将被保存并稍后自动完成):
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));
},
}
});
问题是如何在 yeoman 上下文中从 this.prompt
中获取存储的选项来执行以下操作:
this.prompt([!this.name.stored && {
name: 'name', // so after first run this will never be asked again
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));
无法 public 访问存储的先前提示答案。
如果你想缓存一些数据并在以后访问它,那么使用 storage functionality (this.config
)
FWIW,提示缓存存储在私有 this._globalConfig
中。我添加这个细节是为了完整性,你可能不应该使用它。
您可以添加一个 config.js 来存储和读取用户主目录中的信息作为 config.json 文件,以后应用程序可以读取这个可以用作默认文件的文件。
{
name: 'authorName',
message: 'What\'s your name?',
'default': self.defaultAuthorName
}
查看 https://www.npmjs.com/package/generator-yo-wordpress 开发人员在何处使用 config.js 文件。
您可以将默认值用作函数,其中第一个参数是先前存储的答案:
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
},
])