aboutsummaryrefslogtreecommitdiffstats
path: root/gulpfile.js
diff options
context:
space:
mode:
authorSam Potts <me@sampotts.me>2015-03-02 19:50:56 +1100
committerSam Potts <me@sampotts.me>2015-03-02 19:50:56 +1100
commitb6d5ba43ecdfc7740f0cb6e9338725a631cbaff7 (patch)
tree2cca5ff7859ec8424c12e8e69083b0375d51842d /gulpfile.js
parent6cbcfd75d1be266c14da5f0e02c2aa85c1071dfd (diff)
parentce39369d84a3f2dae15eee3a4243be24bbaafdfc (diff)
downloadplyr-b6d5ba43ecdfc7740f0cb6e9338725a631cbaff7.tar.lz
plyr-b6d5ba43ecdfc7740f0cb6e9338725a631cbaff7.tar.xz
plyr-b6d5ba43ecdfc7740f0cb6e9338725a631cbaff7.zip
Merge branch 'master' of github.com:selz/plyr
Conflicts: .gitignore
Diffstat (limited to 'gulpfile.js')
-rw-r--r--gulpfile.js117
1 files changed, 85 insertions, 32 deletions
diff --git a/gulpfile.js b/gulpfile.js
index 22740ed0..302d9d79 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -16,10 +16,14 @@ var fs = require("fs"),
prefix = require("gulp-autoprefixer"),
svgstore = require("gulp-svgstore"),
svgmin = require("gulp-svgmin"),
- hogan = require("gulp-hogan-compile");
+ hogan = require("gulp-hogan-compile"),
+ rename = require("gulp-rename"),
+ s3 = require("gulp-s3"),
+ gzip = require("gulp-gzip"),
+ replace = require("gulp-replace");
var root = __dirname,
- paths = {
+paths = {
plyr: {
// Source paths
src: {
@@ -29,11 +33,7 @@ var root = __dirname,
sprite: path.join(root, "src/sprite/*.svg")
},
// Output paths
- output: {
- js: path.join(root, "dist/js/"),
- css: path.join(root, "dist/css/"),
- sprite: path.join(root, "dist/")
- }
+ output: path.join(root, "dist/")
},
docs: {
// Source paths
@@ -43,11 +43,11 @@ var root = __dirname,
templates: path.join(root, "docs/src/templates/*.html")
},
// Output paths
- output: {
- js: path.join(root, "docs/dist/js/"),
- css: path.join(root, "docs/dist/css/")
- }
- }
+ output: path.join(root, "docs/dist/"),
+ // Docs
+ root: path.join(root, "docs/")
+ },
+ upload: [path.join(root, "dist/**"), path.join(root, "docs/dist/**")]
},
// Task arrays
@@ -58,7 +58,8 @@ tasks = {
},
// Fetch bundles from JSON
-bundles = loadJSON(path.join(root, "bundles.json"));
+bundles = loadJSON(path.join(root, "bundles.json")),
+package = loadJSON(path.join(root, "package.json"));
// Load json
function loadJSON(path) {
@@ -66,7 +67,7 @@ function loadJSON(path) {
}
var build = {
- js: function (files, bundle, output) {
+ js: function (files, bundle) {
for (var key in files) {
(function(key) {
var name = "js-" + key;
@@ -77,12 +78,12 @@ var build = {
.src(bundles[bundle].js[key])
.pipe(concat(key))
.pipe(uglify())
- .pipe(gulp.dest(output));
+ .pipe(gulp.dest(paths[bundle].output));
});
})(key);
}
},
- less: function(files, bundle, output) {
+ less: function(files, bundle) {
for (var key in files) {
(function (key) {
var name = "less-" + key;
@@ -96,12 +97,12 @@ var build = {
.pipe(concat(key))
.pipe(prefix(["last 2 versions"], { cascade: true }))
.pipe(minify())
- .pipe(gulp.dest(output));
+ .pipe(gulp.dest(paths[bundle].output));
});
})(key);
}
},
- sass: function(files, bundle, output) {
+ sass: function(files, bundle) {
for (var key in files) {
(function (key) {
var name = "sass-" + key;
@@ -115,51 +116,51 @@ var build = {
.pipe(concat(key))
.pipe(prefix(["last 2 versions"], { cascade: true }))
.pipe(minify())
- .pipe(gulp.dest(output));
+ .pipe(gulp.dest(paths[bundle].output));
});
})(key);
}
},
- sprite: function(source, output) {
+ sprite: function() {
// Process Icons
gulp.task("sprite", function () {
return gulp
- .src(source)
+ .src(paths.plyr.src.sprite)
.pipe(svgmin({
plugins: [{
removeDesc: true
}]
}))
.pipe(svgstore())
- .pipe(gulp.dest(output));
+ .pipe(gulp.dest(paths.plyr.output));
});
},
- templates: function(source, output) {
+ templates: function() {
// Build templates
gulp.task("templates", function () {
return gulp
- .src(source)
+ .src(paths.docs.src.templates)
.pipe(hogan("templates.js", {
wrapper: false,
templateName: function (file) {
return path.basename(file.relative.replace(/\\/g, "-"), path.extname(file.relative));
}
}))
- .pipe(gulp.dest(output));
+ .pipe(gulp.dest(paths.docs.output));
});
}
};
// Plyr core files
-build.js(bundles.plyr.js, "plyr", paths.plyr.output.js);
-build.less(bundles.plyr.less, "plyr", paths.plyr.output.css);
-build.sass(bundles.plyr.sass, "plyr", paths.plyr.output.css);
-build.sprite(paths.plyr.src.sprite, paths.plyr.output.sprite);
+build.js(bundles.plyr.js, "plyr");
+build.less(bundles.plyr.less, "plyr");
+build.sass(bundles.plyr.sass, "plyr");
+build.sprite();
// Docs files
-build.templates(paths.docs.src.templates, paths.docs.output.js);
-build.less(bundles.docs.less, "docs", paths.docs.output.css);
-build.js(bundles.docs.js, "docs", paths.docs.output.js);
+build.templates();
+build.less(bundles.docs.less, "docs");
+build.js(bundles.docs.js, "docs");
// Default gulp task
gulp.task("default", function(){
@@ -187,4 +188,56 @@ gulp.task("watch", function () {
gulp.watch(paths.docs.src.js, tasks.js);
gulp.watch(paths.docs.src.less, tasks.less);
gulp.watch(paths.docs.src.templates, "js");
+});
+
+// Publish the docs site
+try {
+ var aws = loadJSON(path.join(root, "aws.json"));
+}
+catch (e) { }
+
+var version = package.version,
+maxAge = 31536000, // seconds 1 year
+options = {
+ cdn: {
+ headers: {
+ "Cache-Control": "max-age=" + maxAge + ", no-transform, public",
+ "Vary": "Accept-Encoding"
+ },
+ gzippedOnly: true
+ },
+ docs: {
+ headers: {
+ "Cache-Control": "public, must-revalidate, proxy-revalidate, max-age=0",
+ "Vary": "Accept-Encoding"
+ },
+ gzippedOnly: true
+ }
+},
+cdnpath = new RegExp(aws.cdn.bucket + "\/(\\d+\\.)?(\\d+\\.)?(\\*|\\d+)","gi");
+
+gulp.task("cdn", function () {
+ console.log("Uploading " + version + " to " + aws.cdn.bucket);
+
+ // Upload to CDN
+ gulp.src(paths.upload)
+ .pipe(rename(function (path) {
+ path.dirname = path.dirname.replace(".", version);
+ }))
+ .pipe(gzip())
+ .pipe(s3(aws.cdn, options.cdn));
+});
+
+gulp.task("docs", function () {
+ console.log("Uploading " + version + " docs to " + aws.docs.bucket);
+
+ // Replace versioned files in index.html
+ gulp.src([paths.docs.root + "index.html"])
+ .pipe(replace(cdnpath, aws.cdn.bucket + "/" + version))
+ .pipe(gzip())
+ .pipe(s3(aws.docs, options.docs));
+});
+
+gulp.task("publish", function () {
+ run("templates", tasks.js, tasks.less, "sprite", "cdn", "docs");
}); \ No newline at end of file