ORA Spinner останавливается на CLI с Inquirer. js - PullRequest
1 голос
/ 21 апреля 2020

Не знаю, как озаглавить вопрос, но я постараюсь передать остальную часть вопроса.

Я разрабатываю CLI, который сначала предлагает пользователю несколько вопросов и клонирует репозиторий. на основе ответов.

Пример:

Frontend Framework:
[x] Vue
[ ] React

⠋ Cloning Vue repository...

Я использую Ora для отображения счетчика.

Проблема в том, что вращатель зависает до его запуска. Другие пакеты, которые я использую: Inquirer, Shell js, Chalk и Commander. js для CLI.

CLI
    .command("Frontend")
    .alias("F")
    .description("Frontend Framework")
    .action(() => {
        inquirer.prompt(Questions).then((Answers) => {

            const Spinner = new Ora({
                text: `${chalk.bold(chalk.blue('Cloning Git Repository...'))}`,
                discardStdin: false
            }).start()

            if (Answers.Framework === 'Vue') {
                cloneRepo(Answers.Dir, "git@github.com:Vue/Vuejs.git")


            } else if (Answers.Framework === 'React') {
                cloneRepo(Answers.Dir, "git@github.com:facebook/reactjs.git")
            }

            Spinner.stopAndPersist({
                symbol: "✨",
                text: `${chalk.bold(chalk.green('Git repository cloned'))}`
            })

        })
    })

Массив вопросов

const Questions = [
    {
        type: "list",
        name: "Framework",
        message: "Which frontend framework would you like to use?",
        default: "Vue",
        choices: [
            'Vue',
            'React',
        ]
    },
]

Функция клонирования:

const cloneRepo = (Dir, Repo) => {
    if (shell.exec(`cd ${Dir} && git clone ${Repo} -q .`).code !== 0) {
        shell.echo('Error: Git clone failed')
        shell.exit(1)
    }
}

Я пробовал Spinnies , но проблема та же, она зависает и после завершения процесса показывает сообщение об успехе. Я пробовал несколько возможностей, но не знаю, как обойти Asyn c.

Другие пакеты: - Опросчик. js - Командир. js - Оболочка js

Любая помощь будет принята с благодарностью.

...