Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 28 additions & 2 deletions packages/angular/cli/utilities/color.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,33 @@ import * as ansiColors from 'ansi-colors';
import { WriteStream } from 'tty';

type AnsiColors = typeof ansiColors;
const supportsColor = process.stdout instanceof WriteStream && process.stdout.getColorDepth() > 1;

function supportColor(): boolean {
if (process.env.FORCE_COLOR !== undefined) {
// 2 colors: FORCE_COLOR = 0 (Disables colors), depth 1
// 16 colors: FORCE_COLOR = 1, depth 4
// 256 colors: FORCE_COLOR = 2, depth 8
// 16,777,216 colors: FORCE_COLOR = 3, depth 16
// See: https://nodejs.org/dist/latest-v12.x/docs/api/tty.html#tty_writestream_getcolordepth_env
// and https://github.com/nodejs/node/blob/b9f36062d7b5c5039498e98d2f2c180dca2a7065/lib/internal/tty.js#L106;
switch (process.env.FORCE_COLOR) {
case '':
case 'true':
case '1':
case '2':
case '3':
return true;
default:
return false;
}
}

if (process.stdout instanceof WriteStream) {
return process.stdout.getColorDepth() > 1;
}

return false;
}

export function removeColor(text: string): string {
// This has been created because when colors.enabled is false unstyle doesn't work
Expand All @@ -21,6 +47,6 @@ export function removeColor(text: string): string {
// Create a separate instance to prevent unintended global changes to the color configuration
// Create function is not defined in the typings. See: https://github.com/doowb/ansi-colors/pull/44
const colors = (ansiColors as AnsiColors & { create: () => AnsiColors }).create();
colors.enabled = supportsColor;
colors.enabled = supportColor();

export { colors };
30 changes: 28 additions & 2 deletions packages/angular_devkit/build_angular/src/utils/color.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,33 @@ import * as ansiColors from 'ansi-colors';
import { WriteStream } from 'tty';

type AnsiColors = typeof ansiColors;
const supportsColor = process.stdout instanceof WriteStream && process.stdout.getColorDepth() > 1;

function supportColor(): boolean {
if (process.env.FORCE_COLOR !== undefined) {
// 2 colors: FORCE_COLOR = 0 (Disables colors), depth 1
// 16 colors: FORCE_COLOR = 1, depth 4
// 256 colors: FORCE_COLOR = 2, depth 8
// 16,777,216 colors: FORCE_COLOR = 3, depth 16
// See: https://nodejs.org/dist/latest-v12.x/docs/api/tty.html#tty_writestream_getcolordepth_env
// and https://github.com/nodejs/node/blob/b9f36062d7b5c5039498e98d2f2c180dca2a7065/lib/internal/tty.js#L106;
switch (process.env.FORCE_COLOR) {
case '':
case 'true':
case '1':
case '2':
case '3':
return true;
default:
return false;
}
}

if (process.stdout instanceof WriteStream) {
return process.stdout.getColorDepth() > 1;
}

return false;
}

export function removeColor(text: string): string {
// This has been created because when colors.enabled is false unstyle doesn't work
Expand All @@ -21,6 +47,6 @@ export function removeColor(text: string): string {
// Create a separate instance to prevent unintended global changes to the color configuration
// Create function is not defined in the typings. See: https://github.com/doowb/ansi-colors/pull/44
const colors = (ansiColors as AnsiColors & { create: () => AnsiColors }).create();
colors.enabled = supportsColor;
colors.enabled = supportColor();

export { colors };