diff options
Diffstat (limited to 'gulpfile.js')
-rw-r--r-- | gulpfile.js | 346 |
1 files changed, 173 insertions, 173 deletions
diff --git a/gulpfile.js b/gulpfile.js index 7b530d25..d00b9def 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -4,59 +4,59 @@ /*global require, __dirname*/ /*jshint -W079 */ -var fs = require("fs"), - path = require("path"), - gulp = require("gulp"), - gutil = require("gulp-util"), - concat = require("gulp-concat"), - uglify = require("gulp-uglify"), - less = require("gulp-less"), - sass = require("gulp-sass"), - minify = require("gulp-minify-css"), - run = require("run-sequence"), - prefix = require("gulp-autoprefixer"), - svgstore = require("gulp-svgstore"), - svgmin = require("gulp-svgmin"), - hogan = require("gulp-hogan-compile"), - rename = require("gulp-rename"), - s3 = require("gulp-s3"), - gzip = require("gulp-gzip"), - replace = require("gulp-replace"), - open = require("gulp-open"); +var fs = require("fs"), + path = require("path"), + gulp = require("gulp"), + gutil = require("gulp-util"), + concat = require("gulp-concat"), + uglify = require("gulp-uglify"), + less = require("gulp-less"), + sass = require("gulp-sass"), + minify = require("gulp-minify-css"), + run = require("run-sequence"), + prefix = require("gulp-autoprefixer"), + svgstore = require("gulp-svgstore"), + svgmin = require("gulp-svgmin"), + hogan = require("gulp-hogan-compile"), + rename = require("gulp-rename"), + s3 = require("gulp-s3"), + gzip = require("gulp-gzip"), + replace = require("gulp-replace"), + open = require("gulp-open"); var root = __dirname, paths = { - plyr: { - // Source paths - src: { - less: path.join(root, "src/less/**/*"), - sass: path.join(root, "src/sass/**/*"), - js: path.join(root, "src/js/**/*"), - sprite: path.join(root, "src/sprite/*.svg") - }, - // Output paths - output: path.join(root, "dist/") - }, - docs: { - // Source paths - src: { - less: path.join(root, "docs/src/less/**/*"), - js: path.join(root, "docs/src/js/**/*"), - templates: path.join(root, "docs/src/templates/*.html") - }, - // Output paths - output: path.join(root, "docs/dist/"), - // Docs - root: path.join(root, "docs/") - }, - upload: [path.join(root, "dist/**"), path.join(root, "docs/dist/**")] + plyr: { + // Source paths + src: { + less: path.join(root, "src/less/**/*"), + sass: path.join(root, "src/sass/**/*"), + js: path.join(root, "src/js/**/*"), + sprite: path.join(root, "src/sprite/*.svg") + }, + // Output paths + output: path.join(root, "dist/") + }, + docs: { + // Source paths + src: { + less: path.join(root, "docs/src/less/**/*"), + js: path.join(root, "docs/src/js/**/*"), + templates: path.join(root, "docs/src/templates/*.html") + }, + // Output paths + output: path.join(root, "docs/dist/"), + // Docs + root: path.join(root, "docs/") + }, + upload: [path.join(root, "dist/**"), path.join(root, "docs/dist/**")] }, // Task arrays tasks = { - less: [], - sass: [], - js: [] + less: [], + sass: [], + js: [] }, // Fetch bundles from JSON @@ -69,88 +69,88 @@ function loadJSON(path) { } var build = { - js: function (files, bundle) { - for (var key in files) { - (function(key) { - var name = "js-" + key; - tasks.js.push(name); + js: function (files, bundle) { + for (var key in files) { + (function(key) { + var name = "js-" + key; + tasks.js.push(name); - gulp.task(name, function () { - return gulp - .src(bundles[bundle].js[key]) - .pipe(concat(key)) - .pipe(uglify()) - .pipe(gulp.dest(paths[bundle].output)); - }); - })(key); - } - }, - less: function(files, bundle) { - for (var key in files) { - (function (key) { - var name = "less-" + key; - tasks.less.push(name); + gulp.task(name, function () { + return gulp + .src(bundles[bundle].js[key]) + .pipe(concat(key)) + .pipe(uglify()) + .pipe(gulp.dest(paths[bundle].output)); + }); + })(key); + } + }, + less: function(files, bundle) { + for (var key in files) { + (function (key) { + var name = "less-" + key; + tasks.less.push(name); - gulp.task(name, function () { - return gulp - .src(bundles[bundle].less[key]) - .pipe(less()) - .on("error", gutil.log) - .pipe(concat(key)) - .pipe(prefix(["last 2 versions"], { cascade: true })) - .pipe(minify()) - .pipe(gulp.dest(paths[bundle].output)); - }); - })(key); - } - }, - sass: function(files, bundle) { - for (var key in files) { - (function (key) { - var name = "sass-" + key; - tasks.sass.push(name); + gulp.task(name, function () { + return gulp + .src(bundles[bundle].less[key]) + .pipe(less()) + .on("error", gutil.log) + .pipe(concat(key)) + .pipe(prefix(["last 2 versions"], { cascade: true })) + .pipe(minify()) + .pipe(gulp.dest(paths[bundle].output)); + }); + })(key); + } + }, + sass: function(files, bundle) { + for (var key in files) { + (function (key) { + var name = "sass-" + key; + tasks.sass.push(name); - gulp.task(name, function () { - return gulp - .src(bundles[bundle].sass[key]) - .pipe(sass()) - .on("error", gutil.log) - .pipe(concat(key)) - .pipe(prefix(["last 2 versions"], { cascade: true })) - .pipe(minify()) - .pipe(gulp.dest(paths[bundle].output)); - }); - })(key); - } - }, - sprite: function() { - // Process Icons - gulp.task("sprite", function () { - return gulp - .src(paths.plyr.src.sprite) - .pipe(svgmin({ - plugins: [{ - removeDesc: true - }] - })) - .pipe(svgstore()) - .pipe(gulp.dest(paths.plyr.output)); - }); - }, - templates: function() { - // Build templates - gulp.task("templates", function () { - return gulp - .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(paths.docs.output)); - }); - } + gulp.task(name, function () { + return gulp + .src(bundles[bundle].sass[key]) + .pipe(sass()) + .on("error", gutil.log) + .pipe(concat(key)) + .pipe(prefix(["last 2 versions"], { cascade: true })) + .pipe(minify()) + .pipe(gulp.dest(paths[bundle].output)); + }); + })(key); + } + }, + sprite: function() { + // Process Icons + gulp.task("sprite", function () { + return gulp + .src(paths.plyr.src.sprite) + .pipe(svgmin({ + plugins: [{ + removeDesc: true + }] + })) + .pipe(svgstore()) + .pipe(gulp.dest(paths.plyr.output)); + }); + }, + templates: function() { + // Build templates + gulp.task("templates", function () { + return gulp + .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(paths.docs.output)); + }); + } }; // Plyr core files @@ -166,22 +166,22 @@ build.js(bundles.docs.js, "docs"); // Default gulp task gulp.task("default", function(){ - run("templates", tasks.js, tasks.less, "sprite"); + run("templates", tasks.js, tasks.less, "sprite"); }); // Build all JS (inc. templates) gulp.task("js", function(){ - run("templates", tasks.js); + run("templates", tasks.js); }); // Build SASS (for testing, default is LESS) gulp.task("sass", function(){ - run(tasks.sass); + run(tasks.sass); }); // Watch for file changes gulp.task("watch", function () { - // Plyr core + // Plyr core gulp.watch(paths.plyr.src.js, tasks.js); gulp.watch(paths.plyr.src.less, tasks.less); gulp.watch(paths.plyr.src.sprite, "sprite"); @@ -189,7 +189,7 @@ gulp.task("watch", function () { // Docs gulp.watch(paths.docs.src.js, tasks.js); gulp.watch(paths.docs.src.less, tasks.less); - gulp.watch(paths.docs.src.templates, "js"); + gulp.watch(paths.docs.src.templates, "js"); }); // Publish a version to CDN and docs @@ -198,69 +198,69 @@ gulp.task("watch", function () { // Some options var aws = loadJSON(path.join(root, "aws.json")), version = package.version, -maxAge = 31536000, // seconds 1 year +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 - } + 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"); // Publish version to CDN bucket gulp.task("cdn", function () { - console.log("Uploading " + version + " to " + aws.cdn.bucket); + 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)); + // 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)); }); // Publish to Docs bucket gulp.task("docs", function () { - console.log("Uploading " + version + " docs to " + aws.docs.bucket); + console.log("Uploading " + version + " docs to " + aws.docs.bucket); - // Replace versioned files in *.html - gulp.src([paths.docs.root + "*.html"]) - .pipe(replace(cdnpath, aws.cdn.bucket + "/" + version)) - .pipe(gulp.dest(paths.docs.root)) - .pipe(gzip()) - .pipe(s3(aws.docs, options.docs)); + // Replace versioned files in *.html + gulp.src([paths.docs.root + "*.html"]) + .pipe(replace(cdnpath, aws.cdn.bucket + "/" + version)) + .pipe(gulp.dest(paths.docs.root)) + .pipe(gzip()) + .pipe(s3(aws.docs, options.docs)); - // Upload error.html to cdn using docs options - gulp.src([paths.docs.root + "error.html"]) - .pipe(gzip()) - .pipe(s3(aws.cdn, options.docs)); + // Upload error.html to cdn using docs options + gulp.src([paths.docs.root + "error.html"]) + .pipe(gzip()) + .pipe(s3(aws.cdn, options.docs)); }); // Open the docs site to check it's sweet gulp.task("open", function () { - console.log("Opening " + aws.docs.bucket + "..."); + console.log("Opening " + aws.docs.bucket + "..."); - // A file must be specified or gulp will skip the task - // Doesn't matter which file since we set the URL above - // Weird, I know... - gulp.src([paths.docs.root + "index.html"]) - .pipe(open("", { - url: "http://" + aws.docs.bucket - })); + // A file must be specified or gulp will skip the task + // Doesn't matter which file since we set the URL above + // Weird, I know... + gulp.src([paths.docs.root + "index.html"]) + .pipe(open("", { + url: "http://" + aws.docs.bucket + })); }); // Do everything gulp.task("publish", function () { - run("templates", tasks.js, tasks.less, "sprite", "cdn", "docs", "open"); + run("templates", tasks.js, tasks.less, "sprite", "cdn", "docs", "open"); });
\ No newline at end of file |