easy-renamer
Version:
Easily rename files using custom rename functions that are automatically used against any filepaths that match the associated regex or glob patterns.
121 lines (79 loc) • 3.56 kB
Markdown
# easy-renamer [](https://www.npmjs.com/package/easy-renamer) [](https://npmjs.org/package/easy-renamer) [](https://travis-ci.org/jonschlinkert/easy-renamer)
> Easily rename files using custom rename functions that are automatically used against any filepaths that match the associated regex or glob patterns.
## Install
Install with [npm](https://www.npmjs.com/):
```sh
$ npm install easy-renamer --save
```
## Examples
See [examples](example.js). To run the examples, git clone the project then run the following from the root of the project:
```sh
$ npm i && node example
```
## Usage
```js
var Renamer = require('easy-renamer');
var renamer = new Renamer({destBase: 'foo/bar'});
renamer.matcher('*.md', function(file) {
return path.join(file.dirname, file.filename + '.html');
});
renamer.rename('a/b/c.md');
//=> 'a/b/c.html'
```
**Example with multiple patterns**
```js
var Renamer = require('easy-renamer');
var renamer = new Renamer();
function extname(ext) {
return function(file) {
return path.join(file.dirname, file.filename + ext);
};
}
// use glob patterns...
renamer.matcher('**/*.md', extname('.html'));
// or regex
renamer.matcher(/foo\/.*\.less$/, extname('.css'));
glob('**/*', function(err, files) {
files.forEach(function(fp) {
fp = renamer.rename(fp);
//=> do something with fp...
});
});
```
## Changelog
**v0.3.0**
* Renamed `.match()` method to `.matcher()` (this is the last time, I promise!)
* `file.name` property was renamed to `file.filename`
**v0.2.0**
* Renamed `.pattern()` method to `.match()`
* Implements lazy-caching
## Related projects
You might also be interested in these projects:
* [map-files](https://www.npmjs.com/package/map-files): Return an object for a glob of files. Pass a `rename` function for the keys,… [more](https://www.npmjs.com/package/map-files) | [homepage](https://github.com/jonschlinkert/map-files)
* [micromatch](https://www.npmjs.com/package/micromatch): Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch. Just… [more](https://www.npmjs.com/package/micromatch) | [homepage](https://github.com/jonschlinkert/micromatch)
* [parse-filepath](https://www.npmjs.com/package/parse-filepath): Pollyfill for node.js `path.parse`, parses a filepath into an object. | [homepage](https://github.com/jonschlinkert/parse-filepath)
## Contributing
Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/easy-renamer/issues/new).
## Building docs
Generate readme and API documentation with [verb](https://github.com/verbose/verb):
```sh
$ npm install verb && npm run docs
```
Or, if [verb](https://github.com/verbose/verb) is installed globally:
```sh
$ verb
```
## Running tests
Install dev dependencies:
```sh
$ npm install -d && npm test
```
## Author
**Jon Schlinkert**
* [github/jonschlinkert](https://github.com/jonschlinkert)
* [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
## License
Copyright © 2016, [Jon Schlinkert](https://github.com/jonschlinkert).
Released under the [MIT license](https://github.com/jonschlinkert/easy-renamer/blob/master/LICENSE).
***
_This file was generated by [verb](https://github.com/verbose/verb), v, on April 02, 2016._