Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/anyfs/anyfs
Portable file system for Node
https://github.com/anyfs/anyfs
aws-s3 dropbox filesystem ftp gulp gulp-plugin nodejs
Last synced: about 2 months ago
JSON representation
Portable file system for Node
- Host: GitHub
- URL: https://github.com/anyfs/anyfs
- Owner: anyfs
- License: mit
- Created: 2014-09-22T10:59:32.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2015-04-27T02:45:07.000Z (over 9 years ago)
- Last Synced: 2024-04-24T00:41:09.889Z (9 months ago)
- Topics: aws-s3, dropbox, filesystem, ftp, gulp, gulp-plugin, nodejs
- Language: JavaScript
- Homepage:
- Size: 247 KB
- Stars: 21
- Watchers: 3
- Forks: 5
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# anyfs
[![npm](https://img.shields.io/npm/v/anyfs.svg?style=flat-square)](https://www.npmjs.com/package/anyfs)
[![npm](https://img.shields.io/npm/dm/anyfs.svg?style=flat-square)](https://www.npmjs.com/package/anyfs)
[![Travis](https://img.shields.io/travis/anyfs/anyfs.svg?style=flat-square)](https://travis-ci.org/anyfs/anyfs)
![npm](https://img.shields.io/npm/l/anyfs.svg?style=flat-square)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
## Features- Extensible with plugins
- Super portable with file system adapters
- Works well with Gulp (vinyl-fs plugin)
- API with Promise support## Adapters
AnyFS comes with following adapters.
- [Dropbox](https://github.com/anyfs/dropbox-adapter) - NPM: anyfs-dropbox-adapter
- [FTP](https://github.com/anyfs/ftp-adapter) - NPM: anyfs-ftp-adapter
- [AWS S3](https://github.com/anyfs/s3-adapter) - NPM: anyfs-s3-adapter
- Memory - Builtin, access with `AnyFS.MemoryAdapter`
-[Local](https://github.com/anyfs/local-adapter): local file system
-SFTP
-Baidu
-GIT
-SVN## Plugins
- Core: builtin, basic filesystem support.
- [glob](https://github.com/anyfs/glob-plugin): match files easily.
- [vinyl-fs](https://github.com/anyfs/vinyl-fs-plugin): vinyl-fs port, works well with gulp## Usage
```js
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');
}
});
```## API
### Core API
Following APIs are basic file system APIs.
#### `constructor(adapter, options)`
The constructor accepts an adapter and an options object.
Common options:
- cwd: Current working directory.
#### `metadata(path[, callback(error, metadata)])`
Retrieves file and folder metadata.
Folder metadata:
```js
{
"name": "dir1",
"time": [Date Object],
"is_dir": true,
}
```File metadata:
```js
{
"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 API
Extra APIs are supported by plugins
## Create Custom Adapters
See [adapter specification](adapter.md)
## Create Plugins
## Acknowledgement
Logo by [denjello](https://github.com/denjello)
Inspired by [Flysystem](http://flysystem.thephpleague.com/)