如何去除inquirer.js列表提示符中的?和(use arrow keys)提示
如何在inquirer.js的list提示符中移除
?和(use arrow keys)提示 要移除inquirer.js list类型提示符默认的?前缀和(use arrow keys)操作提示,需要分两步处理:
1. 移除?前缀
在prompt配置中添加prefix: ''即可覆盖默认的?前缀:
async question1() { const answers = await inquirer.prompt({ name: 'question1', type: 'list', message: '\n', prefix: '', // 移除?前缀 choices: [ 'Answer 1', 'Answer 2', 'Answer 3', ], }) return answers.question1; }
2. 移除(use arrow keys)提示
官方没有提供直接关闭该提示的配置项,需要自定义list prompt来修改渲染逻辑:
首先,继承原有的ListPrompt并重写render方法,去掉帮助文本的渲染:
const inquirer = require('inquirer'); const ListPrompt = require('inquirer/lib/prompts/list'); // 自定义ListPrompt,移除操作提示 class CustomListPrompt extends ListPrompt { render(error) { let content = this.getQuestion(); let bottomContent = ''; if (this.status === 'answered') { content += this.style.success(this.answer); } else { // 仅渲染选项,不添加操作提示 const choicesStr = this._getChoices(); content += choicesStr; } if (error) { bottomContent = this.style.error(error); } this.screen.render(content, bottomContent); } } // 注册自定义prompt类型 inquirer.registerPrompt('custom-list', CustomListPrompt);
之后使用自定义的custom-list类型替代原有的list类型:
async question1() { const answers = await inquirer.prompt({ name: 'question1', type: 'custom-list', // 使用自定义prompt message: '\n', prefix: '', // 移除?前缀 choices: [ 'Answer 1', 'Answer 2', 'Answer 3', ], }) return answers.question1; }
这样就能完全移除不需要的提示文本,只显示你定义的选项内容。
内容的提问来源于stack exchange,提问作者StockM4A1
相关产品推荐
相关产品推荐

