0.0.2 • Published 2 years ago

@intouchg/rename-files v0.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

@intouchg/rename-files

Simple Node CLI to rename, move, and delete files using a config file

Getting Started

  1. Install dependencies
yarn add --dev @intouchg/rename-files
  1. Setup a .rename.js config file

  2. Run the CLI, perhaps as part of an npm script after a build

rename-files

Configuration

Create a .rename.js config file in the project root.

// .rename.js
module.exports = {
	context: 'dist',
	patterns: [
		{
			from: '404.html',
			to: 'page-not-found.html',
		},
		{
			from: '/images/icons/*.png',
			to: '/images/*-icon.png',
		},
		{
			delete: '/data/**/*.json'
		},
		{
			from: '/images/**/',
			to: (filepath) => {
				const files = fs.readdirSync(filepath)
				if (files.length > 100) return '/images/100/*'
				return filepath
			}
		},
	],
}

Options

context - Optional. This is the base filepath that all patterns paths will be resolved against. The context path may be absolute or relative to the process.cwd(). Defaults to process.cwd().

cleanEmptyDirs - Optional. This boolean controls if the CLI deletes all empty directories under the context path once all file renaming and deleting has been completed. Defaults to true.

Patterns

patterns - Required. This array contains all pattern objects which control renaming and deleting files.

To delete a file, create a pattern object with a delete path, relative to the context. The delete filepath supports full glob pattern matching.

To rename or move a file, create a pattern object with from and to paths, relative to the context.

The from filepath supports full glob pattern matching.

The to filepath supports a single wildcard character * which will be replaced by everything that was magically matched by glob. This is suitable for simple glob-based replacements:

module.exports = {
	patterns: [
		{
			from: '/texts/**/*.txt',
			to: '/user/documents/*.rtf',
		}
	]
}

For more complex replacements, the to property can also be a function that receives the matched filepath from glob. You can return a string from the to function and the CLI will treat it like any other pattern object - or you can take whatever operations you want on the provided filepath and return void:

module.exports = {
	patterns: [
		{
			from: '/**/*.js',
			to: (filepath) => {
				console.log(filepath)
				return '/scripts/*.jsx'
			}
		},
		{
			from: '/**/',
			to: (filepath) => {
				const files = fs.readDirSync(filepath)
				console.log(files.length)
			}
		},
	]
}
0.0.1

2 years ago

0.0.2

2 years ago

0.1.0

3 years ago