介绍
使用chalk我编写了一个用于打印彩色文本的小型控制台程序,我使用NodeJS执行该程序:
console.log(require('chalk').yellow('yellow text'));
程序以黄色打印字符串“黄色文本”。如果我直接使用node执行脚本,它会输出:
$ node test.js
yellow text
(文字实际上是黄色的)。
这独立于我执行程序的控制台。我尝试了 Windows cmd.exe和Git bash ( mintty )。
问题
如果我将我的程序作为npm package.json 脚本的一部分包括在内,例如
...
"scripts": {
"example": "node test.js"
}
...
并在薄荷糖中 执行它
$ npm run example
> exampleproject@0.0.1 example D:\exampleproject
> node test.js
yellow text
文本实际上不是黄色,而是控制台的默认颜色。但在 Windows cmd.exe中这是可行的,即文本是黄色的!
所以我认为mintty和npm之间的交互一定有问题。npm run example
即使在mintty中,我也可以使文本着色吗?
使用过的版本
- Windows 7 SP1 64 位
- 带有 mintty 2.0.3 的 Git 2.5.3-32 位
- 节点 4.1.0 32 位
- npm 2.14.3
- 粉笔 1.1.1
更多测试后更新
我尝试了不同版本的相关组件,我想我把它钉在了mintty 上。如果我在安装时使用“使用 windows 命令提示符”而不是“使用 mintty”配置它,彩色npm输出可以与Git 一起使用。
之后,我尝试了不同版本的 mintty 以查看它是否可能是一个错误:
- 在MSys 1.0.11 中使用mintty 1.1.3,颜色根本不起作用,即即使是简单的也没有彩色输出。
node test.js
- 在MSys2(版本 20150916)中使用最新的 mintty 2.1.5 ,颜色也完全不起作用。
但是,如果我在直接使用node test.js
(不带npm)执行脚本时使用带有 mintty 2.0.3 的 Git bash ,彩色输出就会起作用。
所以现在我完全糊涂了……