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
- Extensible with plugins
- Super portable with file system adapters
- Works well with Gulp (vinyl-fs plugin)
- API with Promise support
AnyFS comes with following adapters.
- Dropbox - NPM: anyfs-dropbox-adapter
- FTP - NPM: anyfs-ftp-adapter
- AWS S3 - NPM: anyfs-s3-adapter
- Memory - Builtin, access with
AnyFS.MemoryAdapter
Local: local file systemSFTPBaiduGITSVN
- Core: builtin, basic filesystem support.
- glob: match files easily.
- vinyl-fs: vinyl-fs port, works well with gulp
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.
The constructor accepts an adapter and an options object.
Common options:
- cwd: Current working directory.
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.
Get contents of directory.
[
{
// metadata
},
...
]
Create directory recursively.
If callback is not provided, a promise is returned.
Delete file.
If callback is not provided, a promise is returned.
Delete directory recursively.
If callback is not provided, a promise is returned.
Move file or directory to a new place.
Parent folder of newPath
is created automaticly.
If callback is not provided, a promise is returned.
Write file content, will try to create parent directory.
If callback is not provided, a promise is returned.
Read file content.
If callback is not provided, a promise is returned.
Create write stream.
Create read stream.
Extra APIs are supported by plugins
Logo by denjello
Inspired by Flysystem