自动响应 npm/npx 命令行安装中的提示

Automate responses to prompts in an npm/npx command line install

我想通过命令行自动安装 Redocly(API 文档生成器)。 Redocly 项目是使用 npx (npx create-openapi-repo) 生成的。安装过程会触发四个提示(用引号显示;后面是我需要输入的答案)。有些中间有处理。

"Do you already have an OpenAPI/Swagger 3.0 definition for your API? (y/N)" y
"Please specify the path to the OpenAPI definition (local file):" test.yml
"API Name:" My API
"The following folders will be created: openapi and docs. You can change them by running create-openapi-repo Proceed? (Y/n)" Y

问题是似乎启用脚本文件自动完成的命令并没有通过 Redocly npx 安装启用它,至少通过我的尝试是这样。

失败的尝试,除此之外,包括以下内容(一个在 Windows 命令提示符中,其余在 Bash 中)。有些只回答了四个提示中的三个,因为我很少能通过第二个提示。

尝试

cmd.cmd:

npx create-openapi-repo

命令提示符(Windows命令提示符):

C:\Source\api-docs>(echo y && echo test.yml) | cmd.cmd

命令提示符结果:


C:\Source\api-docs>npx create-openapi-repo
Welcome to the OpenAPI-Repo generator!
? Do you already have an OpenAPI/Swagger 3.0 definition for your API? Yes
test.yml
? Please specify the path to the OpenAPI definition (local file):
<ends>

尝试

cmd.sh:

read -n 1 -p "Do you already have an OpenAPI/Swagger 3.0 definition for your API? (y/N)" Y
read -n 1 -p "Please specify the path to the OpenAPI definition (local file):" test.yml
read -n 1 -p "API Name:" My API

命令提示符(Bash):

$ ./cmd.sh

命令提示符结果:

Welcome to the OpenAPI-Repo generator!
? Do you already have an OpenAPI/Swagger 3.0 definition for your API? Yes
? Please specify the path to the OpenAPI definition (local file):

尝试

命令提示符(Bash)

printf 'y\test.yml\My API' | npx create-openapi-repo 

结果同上

尝试

printf '%s\n' y test.yml 'My API' | npx create-openapi-repo 

结果同上

尝试

cmd.txt:

y
test.yml
My API

命令提示符(Bash):

npx create-openapi-repo < cmd.txt

结果同上

有谁知道如何做到这一点?如果重要的话,目标是在 Azure DevOps 管道中执行 Redocly 的部署。该管道提供了在 Bash、Windows 命令提示符或 PowerShell 中执行 运行 命令的能力。

第一个选项是按照 Shawn 的建议使用 expect

如果您确定两次提示之间的时间间隔(例如,小于 10 秒),您可以尝试以下操作:

#!/usr/bin/env bash

{
echo y
sleep 10
echo test.yml
sleep 10
echo My API
} | npx create-openapi-repo