Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
4fac653
feat(chalk-to-util-styletext): add workflow with basic test
richiemccoll Oct 30, 2025
21781d6
feat(chalk-to-util-styletext): sync lockfile
richiemccoll Oct 30, 2025
6944457
feat(chalk-to-util-styletext): add commonjs require case
richiemccoll Oct 30, 2025
e628155
Merge branch 'main' into feat/chalk-styletext-migration
richiemccoll Oct 31, 2025
eaf5469
feat(chalk-to-util-styletext): add bg color case
richiemccoll Oct 31, 2025
8b29e26
feat(chalk-to-util-styletext): add chained case
richiemccoll Oct 31, 2025
0c2b44a
feat(chalk-to-util-styletext): add advanced modifiers case
richiemccoll Oct 31, 2025
54b3bb9
feat(chalk-to-util-styletext): add more modifiers to test case
richiemccoll Oct 31, 2025
90d0648
feat(chalk-to-util-styletext): add modifiers test case
richiemccoll Oct 31, 2025
1bf1736
feat(chalk-to-util-styletext): add mixed imports test case
richiemccoll Oct 31, 2025
6a14179
feat(chalk-to-util-styletext): add dynamic imports test case
richiemccoll Oct 31, 2025
cefb46c
Merge branch 'main' into feat/chalk-styletext-migration
richiemccoll Oct 31, 2025
324fb50
feat(chalk-to-util-styletext): refactoring
richiemccoll Oct 31, 2025
fa51707
feat(chalk-to-util-styletext): code review comments
richiemccoll Nov 1, 2025
27a0ad2
Merge branch 'main' into feat/chalk-styletext-migration
richiemccoll Nov 3, 2025
0482005
feat(chalk-to-util-styletext): code review comments
richiemccoll Nov 3, 2025
8c762aa
Merge branch 'feat/chalk-styletext-migration' of github.com:richiemcc…
richiemccoll Nov 3, 2025
f2a5a8b
feat(chalk-to-util-styletext): handle different import cases
richiemccoll Nov 4, 2025
09e8eaf
feat(chalk-to-util-styletext): add unsupported features test
richiemccoll Nov 4, 2025
412f1ee
Merge branch 'main' into feat/chalk-styletext-migration
richiemccoll Nov 5, 2025
34c97cd
feat(chalk-to-util-styletext): warn on unsupported method
richiemccoll Nov 6, 2025
6d5433d
Merge branch 'feat/chalk-styletext-migration' of github.com:richiemcc…
richiemccoll Nov 6, 2025
661902f
feat(chalk-to-util-styletext): handle method assignments
richiemccoll Nov 8, 2025
3f41a08
feat(chalk-to-util-styletext): handle complex chaining
richiemccoll Nov 8, 2025
0a88554
Merge branch 'main' into feat/chalk-styletext-migration
richiemccoll Nov 10, 2025
4681188
feat(chalk-to-util-styletext): add esm import all test case
richiemccoll Nov 11, 2025
c556127
Merge branch 'feat/chalk-styletext-migration' of github.com:richiemcc…
richiemccoll Nov 11, 2025
6c591b4
feat(chalk-to-util-styletext): update README
richiemccoll Nov 11, 2025
8193bd7
feat(chalk-to-util-styletext): remove dependency util
richiemccoll Nov 11, 2025
2270b25
Merge branch 'main' into feat/chalk-styletext-migration
richiemccoll Nov 14, 2025
752e3b6
feat(chalk-to-util-styletext): add capabilities
richiemccoll Nov 14, 2025
779d2a2
feat(chalk-to-util-styletext): add remove-dependencies integration test
richiemccoll Nov 17, 2025
eee225b
Merge branch 'main' into feat/chalk-styletext-migration
richiemccoll Nov 17, 2025
76c44dd
Merge branch 'feat/chalk-styletext-migration' of github.com:richiemcc…
richiemccoll Nov 17, 2025
72c45b6
feat(chalk-to-util-styletext): remove tsconfig
richiemccoll Nov 17, 2025
841b379
feat(chalk-to-util-styletext): code review comments
richiemccoll Nov 18, 2025
5fd422f
feat(chalk-to-util-styletext): formatting
richiemccoll Nov 18, 2025
e6f600b
Merge branch 'main' into feat/chalk-styletext-migration
richiemccoll Nov 19, 2025
b21ea01
Merge branch 'main' into feat/chalk-styletext-migration
richiemccoll Dec 15, 2025
eb346e0
feat: use allow list
richiemccoll Dec 15, 2025
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
15 changes: 15 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

56 changes: 56 additions & 0 deletions recipes/chalk-to-util-styletext/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Chalk to util.styleText

This recipe migrates from the external `chalk` package to Node.js built-in `util.styleText` API. It transforms chalk method calls to use the native Node.js styling functionality.

## Examples

```diff
- import chalk from 'chalk';
+ import { styleText } from 'node:util';
- console.log(chalk.red('Error message'));
+ console.log(styleText('red', 'Error message'));
- console.log(chalk.green('Success message'));
+ console.log(styleText('green', 'Success message'));
- console.log(chalk.blue('Info message'));
+ console.log(styleText('blue', 'Info message'));
```

```diff
- import chalk from 'chalk';
+ import { styleText } from 'node:util';
- console.log(chalk.red.bold('Important error'));
+ console.log(styleText(['red', 'bold'], 'Important error'));
- console.log(chalk.green.underline('Success with emphasis'));
+ console.log(styleText(['green', 'underline'], 'Success with emphasis'));
```

```diff
- const chalk = require('chalk');
+ const { styleText } = require('node:util');
- const red = chalk.red;
+ const red = (text) => styleText('red', text);
- const boldBlue = chalk.blue.bold;
+ const boldBlue = (text) => styleText(['blue', 'bold'], text);
- console.log(red('Error'));
+ console.log(red('Error'));
- console.log(boldBlue('Info'));
+ console.log(boldBlue('Info'));
```

## Usage

Run this codemod with:

```sh
npx codemod nodejs/chalk-to-util-styletext
```

## Compatibility

- **Removes chalk dependency** from package.json automatically
- **Supports most chalk methods**: colors, background colors, and text modifiers
- **Unsupported methods**: `hex()`, `rgb()`, `ansi256()`, `bgAnsi256()`, `visible()` (warnings will be shown)

## Limitations

- **Complex conditional expressions** in some contexts may need manual review
24 changes: 24 additions & 0 deletions recipes/chalk-to-util-styletext/codemod.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
schema_version: "1.0"
name: "@nodejs/chalk-to-util-styletext"
version: 1.0.0
capabilities:
- fs
- child_process
description: Migrate from the chalk package to Node.js's built-in util.styleText API
author: Richie McColl
license: MIT
workflow: workflow.yaml
category: migration

targets:
languages:
- javascript
- typescript

keywords:
- transformation
- migration

registry:
access: public
visibility: public
24 changes: 24 additions & 0 deletions recipes/chalk-to-util-styletext/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"name": "@nodejs/chalk-to-util-styletext",
"version": "1.0.0",
"description": "Migrate from the chalk package to Node.js's built-in util.styleText API",
"type": "module",
"scripts": {
"test": "npx codemod jssg test -l typescript ./src/workflow.ts ./"
},
"repository": {
"type": "git",
"url": "git+https://github.com/nodejs/userland-migrations.git",
"directory": "recipes/chalk-to-util-styletext",
"bugs": "https://github.com/nodejs/userland-migrations/issues"
},
"author": "Richie McColl",
"license": "MIT",
"homepage": "https://github.com/nodejs/userland-migrations/blob/main/recipes/chalk-to-util-styletext/README.md",
"devDependencies": {
"@codemod.com/jssg-types": "^1.0.9"
},
"dependencies": {
"@nodejs/codemod-utils": "*"
}
}
8 changes: 8 additions & 0 deletions recipes/chalk-to-util-styletext/src/remove-dependencies.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import removeDependencies from '@nodejs/codemod-utils/remove-dependencies';

/**
* Remove chalk and @types/chalk dependencies from package.json
*/
export default function removeChalkDependencies(): string | null {
return removeDependencies(['chalk', '@types/chalk']);
}
Loading
Loading