s3-up
Upload your local files and directories directly to S3
Installation
npm
npm install --save-dev https://github.com/bigbinary/s3-uploader
yarn
yarn add --dev https://github.com/bigbinary/s3-uploader
Usage
Basic Usage
const Uploader = require("@bigbinary/s3-uploader");
const uploader = new Uploader({
bucket: "s3-bucket-name",
path: "target-bucket-path",
});
// add individual file
uploader.addFile("path-to-file");
// add all files in a directory
uploader.addDir("path-to-source-dir");
// start upload
uploader.upload();
// Note: all local paths are expected to be relative to the current working directory - process.cwd()
Configuration
new Uploader(configuration);
configuration
object can have following properties to control the behavior of the uploader:
bucket
: (String) Name of the bucket of the target S3 bucket.
path
: (String) Path to the target directory in bucket where files should be uploaded.
clean
: (Boolean: true) Indicates whether target directory and contents should be removed before starting upload. Setting this false will skip this feature.
fileProperties
: (Object: {}) key-value pairs that providers additional file properties.
key should be a valid Unix style pattern to match file and value should be an object with additional file properties.
distribution
: (String) CloudFront distribution id if you want to invalidate the distribution after successfull upload.
distributionPath
: (String: '/*' | Array) CloudFront distribution path if you want to invalidate only a particular path within the distribution. If you want to target multiple paths, use an array of strings. Supports UNIX style path patterns.
By default, the library attempts to find matching ContentType
for each uploaded file using mime-type
module.
You can override the default properties or assign additional properties for a matching file as follows.
The configuration for first matching key pattern will be used.
uploader.fileProperties: {
"*.js": {
ContentType: "text/javascript",
ContentEncoding: "gzip"
}
}