diff options
author | Sam Potts <me@sampotts.me> | 2015-03-01 20:27:35 +1100 |
---|---|---|
committer | Sam Potts <me@sampotts.me> | 2015-03-01 20:27:35 +1100 |
commit | 05a97500aab22a0115fdb08f175fecb5b62895ae (patch) | |
tree | c7735866deb3f063e81867c94b9d2e93492105de /gulpfile.js | |
parent | eb630ab5518003d15bc09847c95fdb192720ab64 (diff) | |
download | plyr-05a97500aab22a0115fdb08f175fecb5b62895ae.tar.lz plyr-05a97500aab22a0115fdb08f175fecb5b62895ae.tar.xz plyr-05a97500aab22a0115fdb08f175fecb5b62895ae.zip |
Seperated docs, included SASS
Diffstat (limited to 'gulpfile.js')
-rw-r--r-- | gulpfile.js | 228 |
1 files changed, 142 insertions, 86 deletions
diff --git a/gulpfile.js b/gulpfile.js index 0d1cf8fb..22740ed0 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -10,8 +10,9 @@ var fs = require("fs"), concat = require("gulp-concat"), uglify = require("gulp-uglify"), less = require("gulp-less"), - minifyCss = require("gulp-minify-css"), - runSequence = require("run-sequence"), + 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"), @@ -19,32 +20,42 @@ var fs = require("fs"), var root = __dirname, paths = { - // Watch paths - watch: { - less: path.join(root, "src/less/**/*"), - js: path.join(root, "src/js/**/*"), - sprite: path.join(root, "src/sprite/*.svg"), - templates: path.join(root, "src/templates/*.html"), - }, - // Output paths - output: { - js: path.join(root, "dist/js/"), - css: path.join(root, "dist/css/"), - sprite: path.join(root, "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: { + js: path.join(root, "dist/js/"), + css: path.join(root, "dist/css/"), + sprite: 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: { + js: path.join(root, "docs/dist/js/"), + css: path.join(root, "docs/dist/css/") + } + } }, -// Task names -taskNames = { - jsAll: "js-all", - lessBuild: "less-", - jsBuild: "js-", - sprite: "sprite-build", - templates: "templates" -}, // Task arrays -lessBuildTasks = [], -jsBuildTasks = [], +tasks = { + less: [], + sass: [], + js: [] +}, // Fetch bundles from JSON bundles = loadJSON(path.join(root, "bundles.json")); @@ -54,81 +65,126 @@ function loadJSON(path) { return JSON.parse(fs.readFileSync(path)); } -// Build templates -gulp.task(taskNames.templates, function () { - return gulp - .src(paths.watch.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.output.js)); -}); +var build = { + js: function (files, bundle, output) { + for (var key in files) { + (function(key) { + var name = "js-" + key; + tasks.js.push(name); -// Process JS -for (var key in bundles.js) { - (function(key) { - var taskName = taskNames.jsBuild + key; - jsBuildTasks.push(taskName); - - gulp.task(taskName, function () { - return gulp - .src(bundles.js[key]) - .pipe(concat(key)) - .pipe(uglify()) - .pipe(gulp.dest(paths.output.js)); - }); - })(key); -} + gulp.task(name, function () { + return gulp + .src(bundles[bundle].js[key]) + .pipe(concat(key)) + .pipe(uglify()) + .pipe(gulp.dest(output)); + }); + })(key); + } + }, + less: function(files, bundle, output) { + for (var key in files) { + (function (key) { + var name = "less-" + key; + tasks.less.push(name); -// Process CSS -for (var key in bundles.less) { - (function (key) { - var taskName = taskNames.lessBuild + key; - lessBuildTasks.push(taskName); + 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(output)); + }); + })(key); + } + }, + sass: function(files, bundle, output) { + for (var key in files) { + (function (key) { + var name = "sass-" + key; + tasks.sass.push(name); - gulp.task(taskName, function () { + 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(output)); + }); + })(key); + } + }, + sprite: function(source, output) { + // Process Icons + gulp.task("sprite", function () { return gulp - .src(bundles.less[key]) - .pipe(less()) - .on("error", gutil.log) - .pipe(concat(key)) - .pipe(prefix(["last 2 versions"], { cascade: true })) - .pipe(minifyCss()) - .pipe(gulp.dest(paths.output.css)); + .src(source) + .pipe(svgmin({ + plugins: [{ + removeDesc: true + }] + })) + .pipe(svgstore()) + .pipe(gulp.dest(output)); }); - })(key); -} + }, + templates: function(source, output) { + // Build templates + gulp.task("templates", function () { + return gulp + .src(source) + .pipe(hogan("templates.js", { + wrapper: false, + templateName: function (file) { + return path.basename(file.relative.replace(/\\/g, "-"), path.extname(file.relative)); + } + })) + .pipe(gulp.dest(output)); + }); + } +}; -// Process Icons -gulp.task(taskNames.sprite, function () { - return gulp - .src(paths.watch.sprite) - .pipe(svgmin({ - plugins: [{ - removeDesc: true - }] - })) - .pipe(svgstore()) - .pipe(gulp.dest(paths.output.sprite)); -}); +// 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); + +// 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); // Default gulp task gulp.task("default", function(){ - runSequence(taskNames.jsAll, lessBuildTasks.concat(taskNames.sprite, "watch")); + run("templates", tasks.js, tasks.less, "sprite"); }); // Build all JS (inc. templates) -gulp.task(taskNames.jsAll, function(){ - runSequence(taskNames.templates, jsBuildTasks); +gulp.task("js", function(){ + run("templates", tasks.js); +}); + +// Build SASS (for testing, default is LESS) +gulp.task("sass", function(){ + run(tasks.sass); }); // Watch for file changes gulp.task("watch", function () { - //gulp.watch(paths.watch.templates, [taskNames.jsAll]); - //gulp.watch(paths.watch.js, [taskNames.jsAll]); - gulp.watch(paths.watch.less, lessBuildTasks); - gulp.watch(paths.watch.sprite, [taskNames.iconBuild]); + // 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"); + + // Docs + gulp.watch(paths.docs.src.js, tasks.js); + gulp.watch(paths.docs.src.less, tasks.less); + gulp.watch(paths.docs.src.templates, "js"); });
\ No newline at end of file |