Skip to content
On this page

Rename paths

The renamePaths action is useful to rename files or directories inside the target directory.

Usage

Call the renamePaths options in the handler function:

ts
export default definePreset({
  // ...
  handler: async () => {
    await renamePaths({
      paths: 'vite.config.js',
      transformer: ({name}) => `${name}.ts`,
    })
  },
})

Options

paths

Defines the files or directories to rename from the target directory. Must be a string or array of strings. Can use a double-star glob.

transformer

Defines the string or mutating function which returns the targets ParsedPath and can be used to transform its name or extension.

Examples

Rename a single file in the target directory

ts
await renamePaths({
  paths: '_tsconfig.json',
  transformer: 'tsconfig.json',
})

Change a single files extension via mutating function

ts
await renamePaths({
  paths: 'blog-post.md',
  transformer: ({name}) => `${name}.mdx`,
})

Rename multiple folders in the target directory via mutating function

ts
await renamePaths({
  paths: ['folder-1', 'folder-2'],
  transformer: ({base}) => `old-${base}`,
})

Rename globs via mutating function

ts
const now = new Date().toISOString().substring(0, 10)

await renamePaths({
  paths: '**/*.txt',
  transformer: ({base}) => `${now}-${base}`,
})

Interface

ts
interface ParsedPath {
  name: string
  base: string
  ext?: string
}

export interface RenamePathsOptions {
  paths: string | string[]
  transformer: string | ((parameters: ParsedPath) => string)
}