Des*_*sty 16 windows git node.js npm mintty
使用粉笔我已经编写了一个用于打印彩色文本的小型控制台程序,我使用NodeJS执行:
console.log(require('chalk').yellow('yellow text'));
程序以黄色打印字符串"黄色文本".如果我直接用节点执行脚本,它输出:
$ node test.js
yellow text
(文本确实是黄色的).
这与我执行程序的控制台无关.我尝试了Windows cmd.exe和Git bash(mintty).
如果我将我的程序包含在npm package.json脚本中,例如使用
...
"scripts": {
  "example": "node test.js"
}
...
并在执行它mintty与
$ npm run example
> exampleproject@0.0.1 example D:\exampleproject
> node test.js
yellow text
文本实际上不是黄色,而是控制台的默认颜色.但在Windows cmd.exe中这是有效的,即文本是黄色的!
所以我假设mintty和npm之间的交互一定存在问题.我可以得到甚至彩色文本npm run example的mintty?
我尝试了不同版本的相关组件,我想我已经把它钉到了薄荷.彩色NPM输出工作使用Git,如果我将其配置与"使用Windows命令提示符",而不是"使用mintty"同时安装.
之后,我尝试了不同版本的mintty,看看它是否可能是一个bug:
node test.js无彩色输出.但是如果我使用Git bash与mintty 2.0.3同时直接执行脚本node test.js(没有npm),那么彩色输出就有效了.
所以现在我完全糊涂了......
小智 13
它与Node.js上的已知问题有关:
Node.js在windows/cygwin nodejs/node#3006上没有运行tty
Git Bash错误 - 无法读取属性'substring'#272.
不确定,是否会被修复.
简而言之,MSYS/Cygwin /等(使用Mintty作为终端模拟器)在"假"控制台内部运行bash,这与节点不相处.对于任何其他终端仿真器,它可能是相同的.
要检查是否在TTY上下文中运行Node.js,请尝试以下操作:
cd c:/nodejs
./node -p -e "Boolean(process.stdout.isTTY)"
注意,node -p -e "Boolean(process.stdout.isTTY)"在这种情况下,简单运行不会起作用.
创建~/.bashrc带有内容的文件可以export FORCE_COLOR=true使颜色在Windows 10的Git Bash中对我有用,正如diego nunes和leroyse用更笼统的术语指出的那样。
| 归档时间: | 
 | 
| 查看次数: | 5851 次 | 
| 最近记录: |