将 `npm run start` 的输出写入文件。

25
我想将npm run start的输出结果保存到文件中(我遇到了很多错误,希望能更好地控制如何筛选输出结果)。请问该怎么做?
npm run start > log.txt

我收到一个非常简略的文件(8行),最后一行是[34mℹ[39m [90m「wdm」[39m: Failed to compile.

当我尝试...

npm run start &> log.txt // redirect stderr and stdout to a file

我得到了一个同样缩略的文件(11行),以类似的混乱输出结束。

我错过了什么?


产生这些错误的原因是什么? - Ente
@Ente:将单一代码库升级到Babel 7 - sfletche
那么你的 package.json 文件中 scripts.start 部分是什么样子的? - Ente
2个回答

35

这会起作用

npm run start 2>&1| tee npm.txt

说明:

2>&1将错误输出(stderr)重定向到标准输出(stdout),tee命令会将终端输出写入文件。


好的。这确实会生成一个带有输出的文件,但输出中混杂着各种转义类型字符(我认为它们是颜色代码)。有没有办法在原始命令中防止颜色代码呢? - sfletche
1
啊,好的。使用esc=$'\e'sed "s/$esc\[[0-9;]*m//g" log.txt > log2.txt去除了颜色代码。 - sfletche

7

我的成功方法:

npm start >> log.txt 2>> log.txt

>> log.txt可以将stdout重定向到文件。

2>> log.txt可以将stderr重定向到文件。

有些人会使用缩写&>>来同时重定向stdoutstderr,但我的Mac和Ubuntu都不接受这种方式 :(

附加信息:>会覆盖文件内容,而>>会在文件末尾追加。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接