grunt-awssum-deploy
Upload your static assets to an S3 bucket Based on grunt-awssum-deploy by Jordan Sitkin
Getting Started
This plugin requires Grunt ~0.4.1
If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
npm install grunt-awssum-deploy-branch --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks('grunt-awssum-deploy-branch');
To Run:
grunt s3deploy --production
Defaults to target = staging.
The "s3deploy" task
Overview
In your project's Gruntfile, add a section named s3deploy
to the data object passed into grunt.initConfig()
.
Options
options.key
Type: String
Your AWS access key, mandatory.
options.secret
Type: String
Your AWS secret, mandatory.
options.stagingBucket
Type: String
The bucket to upload to for deploying to staging, mandatory.
options.productionBucket
Type: String
The bucket to upload to for deploying to production. mandatory.
options.connections
Type: Integer
How many concurrent connections to keep open while uploading to S3. Defaults to 3.
options.nocache
Type: String
Array of filepaths to apply s3 metadata Cache-Control max-age=0 to. Useful for preventing caching when using s3 with Cloudfront
File Options
ContentType
Type: String
Define Content-Type for file. Defaults to determining content-type automatically based on filename
Note
The project is based on awssum, and uses code from a gist by @chilts and @twhid.
Usage Examples
grunt.initConfig({
s3deploy: {
options: {
key: '<%= secret.awsKey %>',
secret: '<%= secret.awsSecret %>',
stagingBucket: 'staging',
productionBucket: 'prod',
access: 'public-read',
connections: 5,
nocache: ['index.html'] // files to to set cache-control max-age=0 on in s3 metadata
},
dist: {
files: [{
expand: true,
cwd: 'dist/',
src: '**/*.*', // note: you must not include directories
dest: './'
}]
},
snapshots: {
files: [{
expand: true,
cwd: 'dist/snapshots/',
src: '**/*.*', // note: you must not include directories
dest: './',
contentType: 'text/html'
}]
}
}
})
Contributing
In lieu of a formal styleguide, take care to maintain the existing coding style.
Release History
- 2013-07-28 v0.1.0 First release
- 2013-07-28 v0.1.1 Added async queue and connections option
- 2013-08-01 v0.1.2 Automatically set ContentType property on S3 using mime package