Lerna环境中Inquirer交互提示无法正常渲染问题求助
Lerna + Inquirer 交互提示不显示问题解决
问题根源
Lerna默认会缓冲子进程的输出,且默认未将终端的stdin/stdout正确传递给子进程,导致Inquirer的交互提示无法实时显示,仅在进程退出或输出缓冲区满时才会出现内容。
解决步骤
1. 用--stream实时输出日志
执行Lerna命令时添加--stream参数,让子进程的输出实时打印到终端:
lerna run start --scope=cli-app --stream -- delete-feature -r
2. 开启终端交互权限
若上述方法无效,追加--interactive参数,确保Lerna将终端交互权限传递给子进程:
lerna run start --scope=cli-app --stream --interactive -- delete-feature -r
3. 给Inquirer显式指定输入输出流
在代码中直接指定Inquirer使用当前进程的stdin和stdout,规避Lerna的缓冲影响:
const permission = (await inquirer.prompt(question, { stdin: process.stdin, stdout: process.stdout })).permission;
4. 检查项目脚本配置
确认cli-app项目的package.json中start脚本为直接执行CLI入口,无额外缓冲设置:
{ "scripts": { "start": "node dist/src/index.js" } }
内容的提问来源于stack exchange,提问作者Amit Limbasiya
相关产品推荐
相关产品推荐

