From 195d90e1388a2b888043ba2269d637588bbd0587 Mon Sep 17 00:00:00 2001 From: zhang1106 <849185023@qq.com> Date: Wed, 18 Mar 2026 08:52:44 +0800 Subject: [PATCH] =?UTF-8?q?refactor(install.js):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=AF=86=E7=A0=81=E8=BE=93=E5=85=A5=E5=A4=84=E7=90=86=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install.js | 52 ++++++++++++++++++++++++---------------------------- 1 file changed, 24 insertions(+), 28 deletions(-) diff --git a/install.js b/install.js index 1d1edf4..0505adc 100644 --- a/install.js +++ b/install.js @@ -205,6 +205,7 @@ function askPassword(question) { let password = ''; const stdin = process.stdin; + const stdout = process.stdout; const cleanup = () => { if (stdin.isTTY) { @@ -216,41 +217,36 @@ function askPassword(question) { }; const onData = (char) => { - const c = char; + const code = char.charCodeAt(0); - switch (c) { - case '\n': - case '\r': - case '\u0004': - cleanup(); - console.log(); - resolve(password); - break; - case '\u0003': - cleanup(); - console.log('\n已取消'); - process.exit(0); - break; - case '\u007F': - case '\b': - if (password.length > 0) { - password = password.slice(0, -1); - process.stdout.write('\b \b'); - } - break; - default: - password += c; - process.stdout.write('*'); - break; + if (code === 10 || code === 13) { + cleanup(); + stdout.write('\n'); + resolve(password); + } else if (code === 3) { + cleanup(); + stdout.write('\n已取消\n'); + process.exit(0); + } else if (code === 127 || code === 8) { + if (password.length > 0) { + password = password.slice(0, -1); + stdout.write('\b \b'); + } + } else if (code >= 32) { + password += char; + stdout.write('*'); } }; if (stdin.isTTY) { stdin.setRawMode(true); + stdin.resume(); + stdin.on('data', onData); + } else { + rl.question('', (answer) => { + resolve(answer.trim()); + }); } - stdin.setEncoding('utf8'); - stdin.on('data', onData); - stdin.resume(); }); }