s3 plugin for gulp
First, install gulp-s3-gzip
as a development dependency:
npm install --save-dev gulp-s3-gzip
Setup your aws.json file
{
"key": "AKIAI3Z7CUAFHG53DMJA",
"secret": "acYxWRu5RRa6CwzQuhdXEfTpbQA+1XQJ7Z1bGTCx",
"bucket": "dev.example.com",
"region": "eu-west-1"
}
Then, use it in your gulpfile.js
:
var s3 = require("gulp-s3-gzip");
aws = JSON.parse(fs.readFileSync('./aws.json'));
gulp.src('./dist/**')
.pipe(s3(aws));
Type: Array
Default: []
Headers to set to each file uploaded to S3
var options = { headers: {'Cache-Control': 'max-age=315360000, no-transform, public'} }
gulp.src('./dist/**', {read: false})
.pipe(s3(aws, options));
Type: Boolean
Default: false
When handling uploading assets to S3, the build should be able to decide whether or not to remove any .gz
extensions from gzipped files. The decision to add this flag stems from the documentation Amazon provides on Serving Compressed Files from Amazon S3. To summarize:
Amazon S3 doesn't automatically compress files as web servers do. If you want to serve compressed content and you're using Amazon S3 as your origin, you need to store compressed and uncompressed versions of your files in your Amazon S3 bucket. You also need to develop your application to intercept viewer requests and change the request URL based on whether the request includes an Accept-Encoding: gzip header.
Type: Boolean
Default: false
Only upload files with .gz extension, additionally it will remove the .gz suffix on destination filename and set appropriate Content-Type and Content-Encoding headers.
var gulp = require("gulp");
var s3 = require("gulp-s3-gzip");
var gzip = require("gulp-gzip");
var options = { gzippedOnly: true };
gulp.src('./dist/**')
.pipe(gzip())
.pipe(s3(aws, options));
});