从 Prompt 获取输入并使用它来更改 javascript 文件中的字段,Yeoman
Get the input from Prompt and use it to change a field inside a javascript file, Yeoman
我正在使用 Yeoman 做一个生成器
我知道它一定很简单,但是我最近才开始使用yeoman,对它不是很熟悉。
我想获取用户的输入并使用它来更改 class 名称或变量
我问用户class
的名字是什么
this.controllerName = await this.prompt({
type: 'input',
name: 'controllerName',
message: `What's the name of the controller?`
})
我知道如何更改文件名
this.destinationPath(`${this.controllerName.controllerName}Controller.js`)
但我不知道如何更改文件中的字段。例子:
我的模板 class
class TemplateController {
createTemplate (req, res) {
console.log('GET request')
res.json('URL WORKING!')
}
我想根据用户在提示中回答的内容更改 class/method 名称
class UserController {
createUser (req, res) {
console.log('GET request')
res.json('URL WORKING!')
}
将占位符添加到您的基本文件(yeoman 使用 EJS 模板引擎):
_controller.js
class <%= name %>Controller {
create<%= name %> (req, res) {
console.log('GET request')
res.json('URL WORKING!')
}
}
将用户输入作为name
传递给您的模板:
index.js
...
writing() {
this.fs.copyTpl(
this.templatePath('_controller.js'),
this.destinationPath(`${this.controllerName.controllerName}Controller.js`),
{
name: this.controllerName.controllerName
}
)
}
...
我正在使用 Yeoman 做一个生成器
我知道它一定很简单,但是我最近才开始使用yeoman,对它不是很熟悉。
我想获取用户的输入并使用它来更改 class 名称或变量
我问用户class
的名字是什么this.controllerName = await this.prompt({
type: 'input',
name: 'controllerName',
message: `What's the name of the controller?`
})
我知道如何更改文件名
this.destinationPath(`${this.controllerName.controllerName}Controller.js`)
但我不知道如何更改文件中的字段。例子:
我的模板 class
class TemplateController {
createTemplate (req, res) {
console.log('GET request')
res.json('URL WORKING!')
}
我想根据用户在提示中回答的内容更改 class/method 名称
class UserController {
createUser (req, res) {
console.log('GET request')
res.json('URL WORKING!')
}
将占位符添加到您的基本文件(yeoman 使用 EJS 模板引擎):
_controller.js
class <%= name %>Controller {
create<%= name %> (req, res) {
console.log('GET request')
res.json('URL WORKING!')
}
}
将用户输入作为name
传递给您的模板:
index.js
...
writing() {
this.fs.copyTpl(
this.templatePath('_controller.js'),
this.destinationPath(`${this.controllerName.controllerName}Controller.js`),
{
name: this.controllerName.controllerName
}
)
}
...