Skip to content

Commit dd7958f

Browse files
committed
fix: require stdout to be a TTY for progress
Progress is shown on stderr but looks weird when stdout is piped to another command. So we should only show it by default if both streams are TTYs.
1 parent 8add914 commit dd7958f

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

workspaces/config/lib/definitions/definitions.js

+5-2
Original file line numberDiff line numberDiff line change
@@ -1549,13 +1549,16 @@ const definitions = {
15491549
type: Boolean,
15501550
description: `
15511551
When set to \`true\`, npm will display a progress bar during time
1552-
intensive operations, if \`process.stderr\` is a TTY.
1552+
intensive operations, if \`process.stderr\` and \`process.stdout\` are a TTY.
15531553
15541554
Set to \`false\` to suppress the progress bar.
15551555
`,
15561556
flatten (key, obj, flatOptions) {
15571557
flatOptions.progress = !obj.progress ? false
1558-
: !!process.stderr.isTTY && process.env.TERM !== 'dumb'
1558+
// progress is only written to stderr but we disable it unless stdout is a tty
1559+
// also. This prevents the progress from appearing when piping output to another
1560+
// command which doesn't break anything, but does look very odd to users.
1561+
: !!process.stderr.isTTY && !!process.stdout.isTTY && process.env.TERM !== 'dumb'
15591562
},
15601563
}),
15611564
provenance: new Definition('provenance', {

0 commit comments

Comments
 (0)