Introduction
Using chalk I have written a small console program for printing colored text, which I execute with NodeJS:
console.log(require('chalk').yellow('yellow text'));
The program prints the string "yellow text" in yellow. If I execute the script directly with node, it outputs:
$ node test.js
yellow text
(the text is actually yellow indeed).
This works independent from the console in which I execute the program. I tried Windows cmd.exe and a Git bash (mintty).
Problem
If I include my program as part of an npm package.json script, e.g. with
...
"scripts": {
"example": "node test.js"
}
...
and execute it in the mintty with
$ npm run example
> [email protected] example D:\exampleproject
> node test.js
yellow text
the text is actually not yellow but in the console's default color. But in the Windows cmd.exe this works, i.e. the text is yellow!
So I assume there must be a problem with the interaction between mintty and npm. Can I get the text colored even with npm run example
in mintty?
Used versions
- Windows 7 SP1 64-bit
- Git 2.5.3-32-bit with mintty 2.0.3
- node 4.1.0 32-bit
- npm 2.14.3
- chalk 1.1.1
Update after more tests
I tried different versions of the involved components, and I guess I nailed it down to mintty. The colored npm output worked with Git, if I configure it with 'Use windows command prompt' instead of 'Use mintty' while installation.
After that I tried different versions of mintty to see if it could be a bug:
- With mintty 1.1.3 inside a MSys 1.0.11 the colors did not work at all, i.e. even the simple
node test.js
had no colored output. - With the newest mintty 2.1.5 inside a MSys2 (version 20150916) the color did not work at all, too.
But the colored output had worked if I used Git bash with mintty 2.0.3 while executing the script directly with node test.js
(without npm).
So now I am totally confused...
npm install -g chalk-cli
and ranecho hello world | chalk bold cyan
and the output was not colored :( – Abradeexport FORCE_COLOR=true
to your .bashrc on Windows. – Preliminaries