1.1.0 • Published 9 years ago
glob-build v1.1.0
glob-build
Globs for files in a directory, processes them all and builds up a nested object
npm install --save glob-build
Example
Say you have a directory with a bunch of mustache templates in a complex directory, and you want an easy way to get to them via a JS api.
The directory might look like
example/
foo.html
bar/baz.html
With this library, you can easily turn that into a JS object that looks like
{
foo: render(data),
bar: {
baz: render(data)
}
}
With some simple code:
var globBuild = require("../").build;
var mustache = require("mustache");
globBuild(__dirname, "html", builder).then(function(templates) {
console.log("Result:", templates);
console.log(templates.foo({
place: "World"
}));
console.log(templates.bar.baz({
place: "World"
}));
}).catch(function(err) {
console.log("Error:", err, err.stack);
})
function builder(contents, name) {
// Name doesn't matter for this
return function(data) {
return mustache.render(contents, data);
}
}
API
build([directory], [extension], [builder])
Takes in a directory, a file extension to match for, and a function for modifying files before they're saved to a tree.
arguments
- directory
String
: The directory to crawl through. Uses present working directory by default. - extension
String
: What file extensions to traget,*
by default - builder
Function(contents,name)
A function for building the value for that file in the tree.contents
is the contents of that file (assumesutf8
),name
is a key path for the file in the tree (looks.like.this
). By default it just sets the value to the contents.
returns
Promise
: Resolves to the generated tree from the files and the builder.
Note: this library uses any-promise, so make sure to have a compatible promise implementation installed.