Node.js Модуль Readline не работает должным образом с окнами git bash

#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?