Fix colors detect for logger (#17455)

This commit is contained in:
fisker Cheung authored and GitHub committed 2025-05-15 11:26:24 +08:00
1 parent 98a06cd5b9
commit 953a8cc6dd
1 file changed
+18 -1
+18 -1
View File
@@ -1,6 +1,22 @@
import mockable from "./mockable.js";
import { picocolors } from "./prettier-internal.js";
const { argv, env } = process;
// https://github.com/alexeyraspopov/picocolors/blob/0e7c4af2de299dd7bc5916f2bddd151fa2f66740/picocolors.js#L2
// Not working on Windows, but this is how `picocolors` works for stdout, let's keep it this way for now
const isStderrColorSupported =
!(Boolean(env.NO_COLOR) || argv.includes("--no-color")) &&
(Boolean(env.FORCE_COLOR) ||
argv.includes("--color") ||
process.platform === "win32" ||
(process.stderr.isTTY && env.TERM !== "dumb") ||
Boolean(env.CI));
// To test this feature,
// run `echo foo | node bin/prettier --unknown-flag --log-level=debug 2>error.log`
// open error.log check if `[warn]` or `[debug]` is colored
// https://github.com/prettier/prettier/issues/13097
const picocolorsStderr = picocolors.createColors(isStderrColorSupported);
const emptyLogResult = { clear() {} };
function createLogger(logLevel = "log") {
return {
@@ -17,7 +33,8 @@ function createLogger(logLevel = "log") {
}
const stream = process[loggerName === "log" ? "stdout" : "stderr"];
const prefix = color ? `[${picocolors[color](loggerName)}] ` : "";
const colors = loggerName === "log" ? picocolors : picocolorsStderr;
const prefix = color ? `[${colors[color](loggerName)}] ` : "";
return (message, options) => {
options = {