0.0.8 • Published 8 years ago

filemixer v0.0.8

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

FileMixer.js

npm version license type Build Status Coverage Status bitHound Code bitHound Score bitHound Dependencies bitHound Dev Dependencies npm downloads Source: ECMAScript 6

Create new and merged virtual files from templates.

  • Provide a template for a file's path and/or contents, render them with a template engine.
  • Use EJS templates by default, or choose your own rendering engine.
  • Render to a virtual file object, or to disk.
  • Merge or overwrite existing file contents using a provided strategy.
import FileMixer from "filemixer";

const path = "./some/path/to/hello<= name %>.txt";
const contents = "Hello, <%= name %>!";
const values = {
	name: "World"
};

/**
 * If contents is not set, the rendered VirtualFile will be a directory.
 * If contents is set, the rendered VirtualFile will be a file.
 */
new FileMixer({ path, contents, values })

/**
 * Optionally set a custom base for the path. Defaults to file's directory name.
 */
.base("./some/path/")

/**
 * Optionally set a custom template engine instead of the default EJS.
 */
.engine((string, stringValues, done) => {
	const handleBarsFileMixer = Handlebars.compile(string);
	const renderedString = handleBarsFileMixer(stringValues);
	done(null, renderedString);
})

/**
 * Optionally set a merging strategy that will run if there's an existing file.
 */
.merge((self, existingFile, newFile, done) => {
	const mergedFile = Object.assign({}, newFile);
	mergedFile.contents = existingFile.contents + newFile.contents;
	done(null, mergedFile);
})

/**
 * Render the path and contents with the designated template engine then run
 * the merge strategy if it exists and there's an existing file then call back
 * with a rendered `VirtualFile` object.
 */
.render((error, file) => {
  file.isFile; // true
  file.isDirectory; // false
  file.path; // ./some/path/to/helloWorld.txt
	file.name; // to/helloWorld.txt
	file.base; // ./some/path/
  file.contents; // Hello, World!
})

/**
 * First `.render` the VirtualFile, then write/overwrite the file to disk.
 */
.write((error, file) => {
  // File was written to disk. The virtual file object is provided here so we
  // don't `.render` twice.
});

How to Contribute

We love pull requests and issue reports! Really!

If you find a bug or have a feature suggestion, please feel free to submit an issue here.

For more information on how to submit a pull request, please read this guide on contributing to open-source projects.

0.0.8

8 years ago

0.0.7

8 years ago

0.0.6

8 years ago

0.0.5

8 years ago

0.0.3

8 years ago

0.0.2

8 years ago

0.0.1

8 years ago

0.0.0

8 years ago