aboutsummaryrefslogtreecommitdiffstats
path: root/gulpfile.js
diff options
context:
space:
mode:
authorSam Potts <me@sampotts.me>2015-03-01 20:27:35 +1100
committerSam Potts <me@sampotts.me>2015-03-01 20:27:35 +1100
commit05a97500aab22a0115fdb08f175fecb5b62895ae (patch)
treec7735866deb3f063e81867c94b9d2e93492105de /gulpfile.js
parenteb630ab5518003d15bc09847c95fdb192720ab64 (diff)
downloadplyr-05a97500aab22a0115fdb08f175fecb5b62895ae.tar.lz
plyr-05a97500aab22a0115fdb08f175fecb5b62895ae.tar.xz
plyr-05a97500aab22a0115fdb08f175fecb5b62895ae.zip
Seperated docs, included SASS
Diffstat (limited to 'gulpfile.js')
-rw-r--r--gulpfile.js228
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