如何在Yeoman Generator中注册Inquirer.js的autocomplete插件?
可以实现!在Yeoman Generator中注册Inquirer插件的方法
当然可以在Yeoman Generator里使用Inquirer的第三方prompt插件,我之前开发Generator时就集成过autocomplete插件,下面是具体的实现步骤:
1. 安装autocomplete插件
首先在你的Generator项目里安装依赖:
npm install inquirer-autocomplete-prompt --save-dev # 或者用yarn yarn add inquirer-autocomplete-prompt --dev
2. 在Generator中注册插件
Yeoman的Generator实例内置了Inquirer对象,你只需要在Generator的代码里(比如app/index.js)注册这个prompt类型即可。通常我会在constructor或者initializing阶段完成注册:
const Generator = require('yeoman-generator'); const autocompletePrompt = require('inquirer-autocomplete-prompt'); module.exports = class extends Generator { constructor(args, opts) { super(args, opts); // 注册autocomplete prompt this.inquirer.registerPrompt('autocomplete', autocompletePrompt); } async prompting() { // 这里就可以用autocomplete类型的提问了 const answers = await this.prompt([ { type: 'autocomplete', name: 'framework', message: '选择你要使用的前端框架:', source: async (answersSoFar, input) => { // input是用户输入的搜索关键词,返回匹配的选项数组 const frameworks = ['React', 'Vue', 'Angular', 'Svelte', 'SolidJS']; if (!input) return frameworks; return frameworks.filter(framework => framework.toLowerCase().includes(input.toLowerCase()) ); } } ]); // 使用用户选择的结果 this.log(`你选择了:${answers.framework}`); } };
3. 关键注意事项
- 版本兼容性:要确保
inquirer-autocomplete-prompt的版本和Yeoman依赖的Inquirer版本匹配。你可以查看Yeoman的package.json(在node_modules/yeoman-generator/package.json里)找到Inquirer的版本范围,再选择对应的插件版本,避免出现兼容问题。 - source函数的要求:autocomplete的
source函数需要返回一个Promise或者直接返回数组,用来根据用户输入动态生成候选选项,这也是autocomplete插件的核心功能。
通用插件注册方法
其实不止autocomplete,任何Inquirer第三方prompt插件都可以用同样的方式注册:
- 安装对应插件
- 在Generator中通过
this.inquirer.registerPrompt('prompt-type', require('plugin-package'))注册 - 在
prompting()里使用对应的type字段
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

