gulp-awspublish
awspublish plugin for gulp
Usage
First, install gulp-awspublish
as a development dependency:
npm install --save-dev gulp-awspublish
Then, add it to your gulpfile.js
:
var es = require('event-stream'),
awspublish = require('gulp-awspublish'),
publisher = awspublish({ key: '...', secret: '...', bucket: '...'}),
headers = { 'Cache-Control': 'max-age=315360000, no-transform, public' };
var js = gulp.src('./public/*.js')
.pipe(publisher.publish(headers));
var jsgz = gulp.src('./public/*.js')
.pipe(awspublish.gzip())
.pipe(publisher.publish(headers));
publisher
.sync(es.merge(js, jsgz)))
.pipe(awspublish.cache())
.pipe(publisher.reporter());
API
awspublish.gzip()
create a through stream, that gzip files and add Content-Encoding headers
awspublish.cache()
create a through stream that create or update an .awspublish cache file with the list
of key value pair (s3.path/s3.etag)
awspublish.create(options)
Create a Publisher
Options are passed to knox to create a s3 client
create a through stream, that push files to s3.
Publish take a header hash that add or override existing s3 headers.
if there is an .awspublish cache file, we first compare disk file etag
with the one in the cache, if etags match we dont query amazon
and file.s3.state is set to 'cache'
we then make a header query and compare the remote etag with the local one
if etags match we don't upload the file and file.s3.state is set to 'skip'
if there is a remote file.s3.state is set to 'update'
otherwhise file.s3.state is set to 'create'
Files that go through the stream get extra properties
s3.path: s3 path
s3.etag: file etag
s3.state: publication state (create, update, cache or skip)
s3.headers: s3 headers for this file
Defaults headers are
- x-amz-acl (default to public-read)
- Content-Type
- Content-Length
Publisher.sync(stream)
Take a stream of files and sync the content of the s3 bucket with these files.
It return a readable stream with both input files and deleted files
deleted file will have s3.state set to delete
awspublish.reporter()
create a reporter that logs s3.path and s3.state (delete, create, update, cache, skip)
License
MIT License