Skip to content

labeebklatif/s3-up

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

s3-up

Upload your local files and directories directly to S3 🪣 with NodeJS. Particulary useful if you are having a S3 served website. This library can be used as part of your build pipeline to deploy new assets. Uploads multiple individual files and directory contents together to a common S3 path.

Installation

npm

npm install --save-dev @labeebklatif/s3-up

yarn

yarn add --dev @labeebklatif/s3-up

Usage

Basic Usage

const Uploader = require("@labeebklatif/s3-up");

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"
  }
}

About

Upload files and directories to S3 with NodeJS

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published