node package manager
It’s your turn. Help us improve JavaScript. Take the 2017 JavaScript Ecosystem Survey »

@ygor/files

@ygor/files

NPM version Downloads Build Status Coverage Status

A no-frills file transformer. Built on promises to work wonderfully with async and await in Node.js 8 and above. Part of the Ygor toolkit.

Node is the CLI, npm is the plugin system. Go nuts.

Install

$ npm install --save-dev @ygor/files

Usage

const { find, read, write } = require('@ygor/files');
const { transform } = require('babel-core');
 
find('src/**/*.js')
  .map(read())
  .map(async file => {
    const { code } = await transform(file.contents);
 
    file.contents = code;
 
    return file;
  })
  .map(write('dest'))
  .then(console.log);

API

find(patterns [, options]): List<File>

Finds files on the file system by the given glob patterns. The results are returned as an array-aware promise (List) of virtual file objects (File).

const files = await find('**/*.js');

read([options]): Function(File): File

Creates a helper to read the contents of a given File object from the file system. Useful as a map function on a list of files.

const files = await find('**/*.js')
    .map(read());
const files = await find('**/*.js')
    // Same as above
    .map(read('utf8'));
const files = await find('**/*.png')
    // Use `null` to read binary files
    .map(read(null));
const files = await find('**/*.png')
    // fs.readFile options object
    .map(read({
        encoding: null,
        flag: 'r'
    }));

write([options]): Function(File): File

  • options {String|Object} Destination directory (relative to the original location or an absolute path), or fs.writeFile options. (default: '.')

Creates a helper to write the contents of a given File object to the file system. Useful as a map function on a list of files.

const files = await find('**/*.js')
    .map(read())
    // Overwrite original file
    .map(write());
const files = await find('**/*.js')
    .map(read())
    // Copy file to new location
    .map(write('dest'));
const files = await find('**/*.js')
    .map(read())
    // fs.writeFile options object
    .map(write({
        cwd: 'dest',
        flag: 'w'
    }));

© 2017 Shannon Moeller me@shannonmoeller.com (shannonmoeller.com)

Licensed under MIT