map-files

0.8.2 • Public • Published

map-files NPM version NPM downloads Build Status

Return an object for a glob of files. Pass a rename function for the keys, or a parse function for the content, allowing it to be used for readable or require-able files.

Install

Install with npm:

$ npm install map-files --save

Heads up!

Breaking changes in v0.8.0. See the history for details.

Usage

var mapFiles = require('map-files');
console.log(mapFiles('templates/*.txt'));

Returns an object of vinyl files that looks something like this:

{ 'test/fixtures/a.txt': <File "test/fixtures/a.txt" <Buffer 41 41 41>>,
  'test/fixtures/b.txt': <File "test/fixtures/b.txt" <Buffer 42 42 42>>,
  'test/fixtures/c.txt': <File "test/fixtures/c.txt" <Buffer 43 43 43>> }

Options

options.cwd

Specify the current working directory

Params

Type: String

Default: process.cwd()

Example

files('*.txt', {cwd: 'templates'});

options.renameKey

Rename the key of each file object:

Params

Type: Function

Default: file.relative

Example

var files = mapFiles('templates/*.txt', {
  renameKey: function (file) {
    return file.basename;
  }
});

Returns something like:

{ 'a.txt': <File "test/fixtures/a.txt" <Buffer 41 41 41>>,
  'b.txt': <File "test/fixtures/b.txt" <Buffer 42 42 42>>,
  'c.txt': <File "test/fixtures/c.txt" <Buffer 43 43 43>> }

options.decorate

Pass an object of methods to decorate as getters onto each file in the results.

var yaml = require('js-yaml');
 
var files = mapFiles('test/fixtures/*.yml', {
  renameKey: 'stem',
  decorate: {
    yaml: function(file) {
      return yaml.safeLoad(file.contents.toString());
    }
  }
});
 
console.log(files.a.yaml);
//=> {title: 'AAA'}

History

v0.8.0

  • options.name was removed, use options.renameKey instead.
  • options.cache was removed
  • options.read was removed
  • options.decorate was added. See the decorate docs.

v0.5.0

As of v0.5.0, map-files returns absolute file paths by default. You can achieve the same results by using a custom name function as in the examples.

Related projects

You might also be interested in these projects:

  • export-files: node.js utility for exporting a directory of files as modules. | homepage
  • file-reader: Read a glob of files, dynamically choosing the reader or requiring the files based on… more | homepage
  • filter-files: Recursively read directories and return a list of files, filtered to have only the files… more | homepage
  • micromatch: Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch. | homepage

Contributing

Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.

Building docs

Generate readme and API documentation with verb:

$ npm install verb && npm run docs

Or, if verb is installed globally:

$ verb

Running tests

Install dev dependencies:

$ npm install -d && npm test

Author

Jon Schlinkert

License

Copyright © 2016, Jon Schlinkert. Released under the MIT license.


This file was generated by verb, v0.9.0, on April 23, 2016.

Package Sidebar

Install

npm i map-files

Weekly Downloads

2,886

Version

0.8.2

License

MIT

Last publish

Collaborators

  • jonschlinkert