Не знаю, как озаглавить вопрос, но я постараюсь передать остальную часть вопроса.
Я разрабатываю 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
Любая помощь будет принята с благодарностью.