🔥 Minify the path list while preserving semantics
This is a utility to reduce the number of characters in a path listing while maintaining the semantics of the directory structure and file names. It was created primarily to reduce the number of tokens used when passing directory information to LLM (e.g. ChatGPT, GPT-4).
npm i path-minifier
Returns a string
list of paths with reduced size by passing the list of paths as a string[]
.
import { minify } from 'path-minifier'
const minified = minify([
'README.md',
'package.json',
'src/index.js',
'src/lib.js'
// ...
])
By default, the output automatically selects the format with the least number of characters.
This behavior can be overridden with the options
argument.
const minified = minify(
[
// ...
],
{
/** 'object' | 'json' | 'indented-list' | 'auto'(default) */
format: 'json'
}
)
Output as a JS object.
Single files are output as strings, multiple files as arrays, and directories as objects.
Can be used to convert to any string format using JSON.stringify
or similar.
const obj = [
'README.md',
'package.json',
{
src: ['index.js', '...']
}
]
Outputs object
as an unformatted JSON string.
The larger the size of the directory, the more characters it tends to reduce.
["README.md", "package.json", { "src": ["index.js", "..."] }]
Output as indented-list
Outputs the directory structure as a list of indented filenames without escaping.
Provides smaller output size for small directories and irregular nested structures.
Indentation is done with \t
.
README.md
package.json
src
index.js
...
Automatically selects the output with the fewest number of haracters and returns the value as a string.
Important
The auto
option selects the output format based on the length of the string, which may not be proportional to the length of the LLM token.
See the interactive demo for a description of this behavior.