0.0.8 • Published 10 years ago

filemixer v0.0.8

Weekly downloads
2
License
MIT
Repository
github
Last release
10 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

10 years ago

0.0.7

10 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago

0.0.0

10 years ago