#node.js #bash #git #readline #husky
Вопрос:
Я создал крючок для предварительной фиксации, используя husky
with node.js
. Я использую Readline
для получения входных данных от пользователя.
Я попытался использовать Readline._writeToOutput
функцию, чтобы, когда пользователь вводит пароль, он записывался *
для каждого нажатия клавиши:
var readline = require('readline');
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl._writeToOutput = stringToWrite => {
if (rl.stdoutMuted)
rl.output.write("*");
else
rl.output.write(stringToWrite);
};
rl.stdoutMuted = true;
rl.question('Password: ', password => {
rl.stdoutMuted = false;
console.log('nPassword is ' password);
rl.close();
});
Я также настроил pre-commit
файл для использования входных данных следующим образом:
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
exec < /dev/tty #allow user input
npm run start
При запуске скрипта на консоли из vscode он работает просто отлично. Проблема в том, что, когда я запускаю его на git bash, кажется _writeToOutput
, что функция вызывается не при каждом нажатии клавиши, а только при написании вопроса и при нажатии клавиши Enter. При нажатии клавиши Enter он записывает то, что было записано в консоль как *
. Например:
Password: 1234 (Enter)
****
1234
123123 (Enter)
******
Почему он отлично работает на Node.js cli, но не на git bash?