从 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
    }
  )
}
...