Portable file system for Node
AnyFS is a portable filesystem abstraction for Node. It aims to provide a
consistent API for different file systems.
WARNING: AnyFS is under heavy development, things may change at any time!
a
AnyFS comes with following adapters.
AnyFS.MemoryAdapter
var AnyFs = require('anyfs');
var FtpAdapter = require('anyfs-ftp-adapter');
var DropboxAdapter = require('anyfs-dropbox-adapter');
var VinylFsPlugin = require('anyfs-vinyl-fs-plugin');
AnyFS.addPlugin(new VinylFsPlugin());
var fs1 = new AnyFS(new FtpAdapter({
server: 'ftp.example.com',
username: 'user',
password: 'password',
}));
var fs2 = new AnyFS(new DropboxAdapter({
key: 'appkey',
secret: 'appsecret',
token: 'token',
}));
// Copy files across filesystems(requires the vinyl-fs plugin)
fs1.src('/**/*.jpg')
.pipe(fs2.dest('/backup/abc/'));
// Promise style API
fs1.mkdir('/doc')
.then(function() {
return this.writeFile('/doc/index.md', "content");
})
.then(function() {
return this.metadata('/doc/index.md');
})
.done(function(metadata) {
console.log(metadata.size);
}, function(err) {
console.log('Error occured: ', err);
});
// callback API
fs.mkdir('/doc', function(err) {
if (err) {
console.log(err);
} else {
console.log('mkdir ok');
}
});
Following APIs are basic file system APIs.
constructor(adapter, options)
The constructor accepts an adapter and an options object.
Common options:
metadata(path[, callback(error, metadata)])
Retrieves file and folder metadata.
Folder metadata:
{
"name": "dir1",
"time": [Date Object],
"is_dir": true,
}
File metadata:
{
"name": "file1.txt",
"time": [Date Object],
"is_dir": false,
"size": 123,
...
}
If callback is not provided, a promise is returned.
list(path[, callback(error, list)])
Get contents of directory.
[
{
// metadata
},
...
]
mkdir(path[, callback(error)])
Create directory recursively.
If callback is not provided, a promise is returned.
delete(path[, callback(error)])
Delete file.
If callback is not provided, a promise is returned.
deleteDir(path[, callback(error)])
Delete directory recursively.
If callback is not provided, a promise is returned.
move(oldPath, newPath[, callback(error)])
Move file or directory to a new place.
Parent folder of newPath
is created automaticly.
If callback is not provided, a promise is returned.
writeFile(path, content[, options][, callback(error)])
Write file content, will try to create parent directory.
If callback is not provided, a promise is returned.
readFile(path[, options][, callback(error, data)])
Read file content.
If callback is not provided, a promise is returned.
createWriteStream(path[, options])
Create write stream.
createReadStream(path[, options])
Create read stream.
Extra APIs are supported by plugins
Logo by denjello
Inspired by Flysystem