Search code examples
node.jswindowsgitnpmmintty

No console colors if using npm script inside a Git bash (mintty)


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:

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...


Solution

  • The current work around seems to be (on windows) to set an environment variable:

    FORCE_COLOR=true

    src: Color support detection problem in git bash on windows