@seahsky/renn
v0.1.0
Published
Normalize folder names in the current directory to a chosen casing style.
Downloads
74
Readme
renn
Normalize the names of every direct-child folder in the current working directory to a chosen casing style.
Install
Global:
npm i -g rennOne-shot:
npx rennUsage
cd into the directory you want to clean up and run renn. It scans the direct children, builds a rename plan, shows you the changes, and asks before doing anything.
$ ls
MyComponent utils_lib OldFolder already-kebab
$ renn
Plan (3 changes):
MyComponent → my-component
OldFolder → old-folder
utils_lib → utils-lib
Proceed? [y/N] y
renamed MyComponent → my-component
renamed OldFolder → old-folder
renamed utils_lib → utils-libFolders that are already in the target style are not shown and not touched. If nothing needs renaming, renn prints Nothing to rename. and exits.
Options
| Flag | Default | Behavior |
|---|---|---|
| --style=<name> | kebab | Target style. One of kebab, camel, snake, pascal. |
| --all | off | Include hidden folders and the common-ignore list. |
| -h, --help | — | Print usage and exit. |
| -v, --version | — | Print version and exit. |
Exit codes: 0 on success or when you decline the prompt, 1 on a runtime or filesystem error, 2 on bad flags.
Examples
Default (kebab):
rennCamelCase:
renn --style=camelInclude hidden folders and node_modules, dist, etc.:
renn --allBehavior
By default, renn skips:
- Hidden folders (anything starting with
., e.g..git,.vscode). - A built-in common-ignore list:
node_modules,dist,build,coverage,.next,.turbo,.cache,out. - Files (only directories are considered).
- Symlinks to directories.
Pass --all to include hidden and common-ignore folders.
When two folders normalize to the same name, the first one in scan order keeps the unsuffixed name and subsequent ones get -2, -3, and so on. The dry-run output tags suffixed entries with (collision: suffixed) so you can tell the suffix wasn't part of the source name.
Renames happen in two phases. Each folder is first moved to a unique temporary name, then to its final name. This makes case-only renames work correctly on case-insensitive filesystems (macOS APFS, Windows NTFS) and means swap-style chains can't clobber each other. If renn crashes mid-apply, you may see leftover folders named .renn-tmp-<hex>; remove them by hand.
License
MIT
