lfs
v0.0.4
Published
Layered file system
Downloads
72
Readme
NodeJS Layered File System
This is a simple module that enables you to layer several file system paths on top of each other. Every layer added will be added to the bottom, so the first layer added is the main one (and the first checked).
When you want to get a file you ask the module and it will return the first path to that file, starting from the first layer. If it does not exist it will check the next layer and so on.
Take a look at this example:
var LFS = require("lfs");
var myfs = new LFS();
myfs.add("/my/app/public/"); // application public folder
myfs.add("/platform/common/public"); // platform common stuff
When you ask for a file path, for example /my-file.txt
, it will check first if /my/app/public/my-file.txt
exists. If it does it will return this path. If not it will check if /platform/common/public/my-file.txt
exists. If it does it will return this other path, otherwise it will return null
.
Following the example, let's consider my-file.txt
exists in the second layer.
var myfs_path = myfs.get("/my-file.txt");
console.log(myfs_path); // /platform/common/public/my-file.txt
This is synchronous or asynchronous if you pass a callback.
myfs.get("/my-file.txt", function (myfs_path) {
console.log(myfs_path); // /platform/common/public/my-file.txt
});
Options
Instead of calling .add()
you can pass a list of layers in the constructor.
var myfs = new LFS({ layers: [ "/my/app/public/", "/platform/common/public" ] });
Cache
LFS can cache the results so the next requests under a certain period will recieve the same response. You can activate it by passing a cache
option with a numeric value in milliseconds.
var myfs = new LFS({ cache: 30000 }); // 30 seconds cache
Get Layer
If instead of the file path you want the layer that matches, you can pass the option in the constructor or in the method.
var myfs = new LFS({ layer: true });
myfs.get("/my-file.txt", { layer: false }); // option for this call only