fengmk2/cnpmjs.org — pull request #137 by dead-horse (2014-01-09 15:50:49+00:00)
Title: Issue136 nfs support

支持两种类型的nfs

1. 可以指定存储的文件名，并且可以通过普通http访问到文件

```
upload(filepath, options, callback) // callback(null, {url: 'xxx.tgz'})
uploadBuffer(buf, options, callback) // // callback(null, {url: 'xxx.tgz'})
remove(key, callback) // remove by key
url(key) // return the tarball url
```

2. 不支持指定存储的文件名，并且无法通过http访问到文件

```
upload(filepath, options, callback) // callback(null, {key: 'xxx'})
uploadBuffer(buf, options, callback) // // callback(null, {key: 'xxx'})
remove(key, callback) // remove by key
download(key, savePath, callback)
```

当 Upload 返回 key 的时候，把 key 写到 module.package.dist.key 和 module.package.dist.tarball 里面去，之后的 remove 和 download 都通过这个 key 来操作。