You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于inquirer包的choices选择触发展示后续跟进问题?

当然可以实现!

完全没问题,Inquirer 支持根据用户的选择动态展示后续问题,刚好能满足你选中 Cassandra 后追加相关配置问题的需求。下面是修改后的代码,我会一步步说明实现思路:

实现思路

把提问流程拆分为两个阶段:

  1. 先收集基础信息(应用名称、描述、作者、插件选择)
  2. 检查用户是否选中了 Cassandra,如果是,就展示额外的 Cassandra 配置问题
  3. 合并所有阶段的回答,最后返回完整结果

修改后的代码

const { prompt } = require('inquirer');
require('colors');

// 基础问题集合
const baseQuestions = [
  { type: 'input', name: 'appName', message: 'Enter application name:' },
  { type: 'input', name: 'appDescription', message: 'Enter app description:' },
  { type: 'input', name: 'appAuthor', message: 'Enter app author:' },
  { 
    type: 'checkbox', 
    name: 'plugins', 
    message: 'Select plugins to install:', 
    choices: [ { name: 'Cassandra' } ] 
  }
];

// Cassandra 专属配置问题
const cassandraQuestions = [
  { type: 'input', name: 'cassandraHost', message: 'Enter Cassandra host (default: localhost):', default: 'localhost' },
  { type: 'input', name: 'cassandraKeyspace', message: 'Enter Cassandra keyspace name:' },
  { type: 'number', name: 'cassandraPort', message: 'Enter Cassandra port (default: 9042):', default: 9042 }
];

module.exports.performQuestions = async () => {
  console.log('\nWelcome to Chef!\n'.underline.italic.cyan);
  
  // 第一步:收集基础信息
  const baseAnswers = await prompt(baseQuestions);

  // 检查应用名称是否为空
  if (!baseAnswers.appName) {
    console.error('\nPlease provide app name!\n'.red);
    process.exit(1);
  }

  // 第二步:判断是否需要追加Cassandra的问题
  let finalAnswers = { ...baseAnswers };
  if (baseAnswers.plugins.includes('Cassandra')) {
    const cassandraAnswers = await prompt(cassandraQuestions);
    // 合并基础回答和Cassandra配置回答
    finalAnswers = { ...finalAnswers, ...cassandraAnswers };
  }

  // 添加固定的appType字段
  finalAnswers.appType = 'service';
  
  return finalAnswers;
};

关键说明

  • 我把问题拆成了baseQuestions和cassandraQuestions两个数组,逻辑更清晰
  • 通过baseAnswers.plugins.includes('Cassandra')判断用户是否选中了该插件
  • 如果选中,就调用prompt展示额外问题,并把结果合并到最终的回答对象里
  • 保留了你原来的颜色样式、应用名称校验和appType字段设置

这样用户选中Cassandra后,就会自动看到对应的配置问题,没选中的话就直接跳过啦~

内容的提问来源于stack exchange,提问作者David Faizulaev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 03:56:33