Skip to content

spec(kleur): migrate kleur to node:util styleText #479

Description

@AugustinMauroy

Description

A migration recipe for kleur would allow users to replace the dependency with Node.js's built-in util.styleText() API.

Test Cases

-import kleur from 'kleur';
+import { styleText } from 'node:util';

-console.log(kleur.red('Error'));
+console.log(styleText('red', 'Error'));
-import kleur from 'kleur';
+import { styleText } from 'node:util';

-console.log(kleur.green('Success'));
+console.log(styleText('green', 'Success'));
-import kleur from 'kleur';
+import { styleText } from 'node:util';

-console.log(kleur.bold('Important'));
+console.log(styleText('bold', 'Important'));
-import kleur from 'kleur';
+import { styleText } from 'node:util';

-console.log(kleur.bgRed('Alert'));
+console.log(styleText('bgRed', 'Alert'));
-import kleur from 'kleur';
+import { styleText } from 'node:util';

-console.log(kleur.bold().red('Failure'));
+console.log(styleText(['bold', 'red'], 'Failure'));
-import kleur from 'kleur';
+import { styleText } from 'node:util';

-console.log(kleur.bold().italic().red('Failure'));
+console.log(styleText(['bold', 'italic', 'red'], 'Failure'));
-import kleur from 'kleur';
+import { styleText } from 'node:util';

-console.log(kleur.bold().italic().underline().red('Failure'));
+console.log(styleText(['bold', 'italic', 'underline', 'red'], 'Failure'));
-import kleur from 'kleur';
+import { styleText } from 'node:util';

-const errorStyle = (msg) => kleur.bold().red(msg);
+const errorStyle = (msg) => styleText(['bold', 'red'], msg);
-import kleur from 'kleur';
+import { styleText } from 'node:util';

-const badge = kleur.bgRed().white(' ERROR ');
+const badge = styleText(['bgRed', 'white'], ' ERROR ');
-import kleur from 'kleur';
+import { styleText } from 'node:util';

-console.log(`${kleur.blue('[INFO]')} ${kleur.green(user)}`);
+console.log(`${styleText('blue', '[INFO]')} ${styleText('green', user)}`);
-import kleur from 'kleur';
+import { styleText } from 'node:util';

-console.log('Status: ' + kleur.bold().green('OK'));
+console.log('Status: ' + styleText(['bold', 'green'], 'OK'));
-import { red } from 'kleur/colors';
+import { styleText } from 'node:util';

-console.log(red('Error'));
+console.log(styleText('red', 'Error'));
-import { green, dim } from 'kleur/colors';
+import { styleText } from 'node:util';

-console.log(green('✓') + ' ' + dim(name));
+console.log(styleText('green', '✓') + ' ' + styleText('dim', name));
-import { bgRed, white } from 'kleur/colors';
+import { styleText } from 'node:util';

-console.log(bgRed(white('FAIL')));
+console.log(styleText(['bgRed', 'white'], 'FAIL'));
-const kleur = require('kleur');
+const { styleText } = require('node:util');

-console.log(kleur.red('Error'));
+console.log(styleText('red', 'Error'));
-const kleur = require('kleur');
+const { styleText } = require('node:util');

-console.log(kleur.bold().yellow('Warning'));
+console.log(styleText(['bold', 'yellow'], 'Warning'));

Unsupported Cases

-kleur.enabled = false;
+// No automatic migration available
-import { $ } from 'kleur/colors';
-console.log($.enabled);
+// No automatic migration available

Metadata

Metadata

Assignees

No one assigned

    Labels

    good first issue humanGood for newcomers AI agent aren't welcomme !help wantedExtra attention is needed
    No fields configured for Feature.

    Projects

    Status
    📋 Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions