Введение
Использование мел Я написал небольшую консольную программу для печати цветного текста, который я выполняю с помощью NodeJS:
console.log(require('chalk').yellow('yellow text'));
Программа печатает строку желтого текста желтым цветом. Если я выполняю script напрямую с node, он выдает:
$ node test.js
yellow text
(текст действительно желтый).
Это работает независимо от консоли, в которой я запускаю программу. Я пробовал Windows cmd.exe и Git bash (mintty).
Проблема
Если я включу свою программу как часть npm package.json script, например. с
...
"scripts": {
"example": "node test.js"
}
...
и выполнить его в mintty с помощью
$ npm run example
> [email protected] example D:\exampleproject
> node test.js
yellow text
текст на самом деле не желтый, но в цвете консоли по умолчанию. Но в Windows cmd.exe это работает, т.е. Текст желтый!
Итак, я предполагаю, что должна быть проблема с взаимодействием между mintty и npm. Могу ли я получить цвет текста даже с npm run example
в mintty?
Используемые версии
- 64-разрядная версия Windows 7 SP1
- Git 2.5.3-32-бит с mintty 2.0.3
- node 4.1.0 32-разрядный
- npm 2.14.3
- мел 1.1.1
Обновление после дополнительных тестов
Я пробовал разные версии задействованных компонентов, и я предполагаю, что я прибил его к mintty. Цветной вывод npm работал с Git, если я настроил его с помощью "Использовать командную строку Windows" вместо "Использовать mintty" во время установки.
После этого я пробовал разные версии mintty, чтобы узнать, может ли это быть ошибкой:
- С mintty 1.1.3 внутри MSys 1.0.11 цвета не работают вообще, т.е. даже простой
node test.js
не имел цветного вывода. - С новейшей версией mintty 2.1.5 внутри MSys2 (версия 20150916) цвет не работал вообще, тоже.
Но цветной выход работал, если я использовал Git bash с mintty 2.0.3 при выполнении script непосредственно с node test.js
(без npm).
Итак, теперь я совершенно смущен...