Как задать набор подсказок, условно основанный на ответе на предыдущий вопрос? - PullRequest
0 голосов
/ 29 мая 2019

Мне нужно создать йоменский генератор, который следует иерархической структуре, подобной этой -

Генератор yeoman спрашивает - хочет ли пользователь создать новый проект или работать над существующим, если пользователь выбирает новый проект, он запрашивает набор приглашений (а именно propmts1), выбирает ли пользователь работать над существующим им спрашивает, хочет ли он импортировать проект из Github или npm, следующие подсказки будут решаться на основе этого ответа.

Я нашел обходной путь, но он не так эффективен, как следовало бы. Логика, которую я сейчас использую, состоит в том, что у меня есть массив объектов, и каждый объект - это вопрос, но проблема в том, что мне нужно проверять условие в каждом приглашении, чтобы решить, следует ли задавать этот вопрос.

const prompts = [
      {
        type: "list",
        name: "q1",
        message: "What do you want to do today?",
        choices: [
          "A",
          "B"
        ],
        default: 0
      },
      {
        type: "input",
        name: "q2",
        message:
          "m2",
        when: function(props) {
          return props.q1 === prompts[0]["choices"][0];
        }
      },
      {
        type: "input",
        name: "q3",
        message:
          'm3',
        when: function(props) {
          return props.q2;
        }
      },
      {
        type: "list",
        name: "q4",
        message:
          "m4",
        choices: ["c", "d"],
        default: 0,
        when: function(props) {
          return !props.q3;
        }
      }
    ];
...