3.1.2 • Published 5 years ago
s3-tree v3.1.2
s3-tree 
Generates a tree of an S3 bucket contents
WARNING! The number of HTTP calls are not optimized. Does a request per 'folder'.
Install
npm i -S s3-treeUsage
const s3tree = require("s3-tree");
const generator = s3tree({ bucket: "my-bucket-name" });
const tree = await generator.generate("/my-folder/subfolder/");
console.log(JSON.stringify(tree, null, 2));Will log something like:
{
"file1": "my-folder/subfolder/file1",
"file2": "my-folder/subfolder/file2",
"folder": {
"file3": "my-folder/subfolder/folder/file3",
"file4": "my-folder/subfolder/folder/file4",
"sub-folder": {
"file5": "my-folder/subfolder/folder/sub-folder/file5",
"file6": "my-folder/subfolder/folder/sub-folder/file6",
"sub-sub-folder": {
"file7": "my-folder/subfolder/folder/sub-folder/sub-sub-folder/file7",
"file8": "my-folder/subfolder/folder/sub-folder/sub-sub-folder/file8"
}
}
}
}API
The s3tree accepts two options:
bucket- Obligatory. The S3 bucket names3- Optional. Theaws-sdkS3 class instance. For example:new AWS.S3({apiVersion: '2006-03-01')
The s3tree.generate(path, depth) function takes:
path- any string. E.g."/","", or"/folder","folder/","folder", or"/1/2/3/4","1/2/3/4/","1/2/3/4", etc.
depth- Optional. The number of folders deep to traverse and generate. 0 will return only the direct contents of the folder.
Returns a Promise.
CLI
Install
$ npm i -g s3-treeUsage:
s3-tree BUCKET [PATH] [DEPTH]Example:
s3-tree my-cat-gifs / 10Prints JSON object (aka the tree). Example:
$ s3-tree my-bucket-name my-folder/subfolder/
{
"file1": "my-folder/subfolder/file1",
"file2": "my-folder/subfolder/file2",
"folder": {
"file3": "my-folder/subfolder/folder/file3",
"file4": "my-folder/subfolder/folder/file4",
"sub-folder": {
"file5": "my-folder/subfolder/folder/sub-folder/file5",
"file6": "my-folder/subfolder/folder/sub-folder/file6",
"sub-sub-folder": {
"file7": "my-folder/subfolder/folder/sub-folder/sub-sub-folder/file7",
"file8": "my-folder/subfolder/folder/sub-folder/sub-sub-folder/file8"
}
}
}
}
$CHANGELOG
v1.0
- Node callbacks interface. No Promises. See README here.
- The deep dependency
aws-sdkversion was>=2.0.0 <3.0.0.
v2.0
- Only promises are supported now. For node callbacks use
generator.generate(path).then(r => cb(null, r), cb) - The deep dependency
aws-sdkversion is>=2.3.0 <3.0.0now. - node.js < v4 are not supported, unless you polyfill Promises
global.Promise = smthng;
v3.0
- Dropped lodash dependency.
- Modernised code from ES5->ES6. node.js < 8 are not supported
- No API changes.
v3.1
- New
depthproperty to limit how much deep the tree should be traversed.