You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

112 lines
2.8 KiB
JavaScript

var gulp = require("gulp");
var fileUrl = require("file-url");
var path = require("path");
var xtend = require("xtend");
var stream = require("stream");
var rfr = require("rfr");
var livereload = require("gulp-livereload");
var rename = require("gulp-rename");
var presetES2015 = require("@joepie91/gulp-preset-es2015");
var presetJade = require("@joepie91/gulp-preset-jade");
var presetSCSS = require("@joepie91/gulp-preset-scss");
var presetRiot = require("@joepie91/gulp-preset-riot");
var patchLivereloadLogger = require("@joepie91/gulp-partial-patch-livereload-logger");
var runElectron = require("@joepie91/gulp-partial-electron");
patchLivereloadLogger(livereload);
var sources = {
"babel-main": "app.js",
"babel-lib": "src/**/*.js",
"jade-views": "src/views/**/*.jade",
"sass-main": "src/stylesheets/**/*.scss",
"riot-components": "src/components/**/*.tag",
"electron": ["lib/**/*.js", "lib/views/**/*.html"]
}
function waitStream(duration) {
var dummyStream = new stream.Readable();
dummyStream._read = function() {
setTimeout(function() {
dummyStream.push(null);
}, duration);
}
return dummyStream;
}
var electronProcess;
gulp.task("electron", ["electron-kill", 'babel-lib', 'babel-main', 'jade-views', 'sass-main', 'riot-components'], function() {
electronProcess = runElectron();
});
gulp.task("electron-kill", function() {
if (electronProcess != null) {
console.log("Killing old Electron process...")
electronProcess.kill("SIGINT");
/* To ensure that the process really has exited... */
return waitStream(200);
}
})
gulp.task('babel-main', function() {
return gulp.src(sources["babel-main"])
.pipe(presetES2015({
livereload: livereload,
basePath: __dirname
}))
.pipe(rename("app.es5.js"))
.pipe(gulp.dest("./"));
});
gulp.task('babel-lib', function() {
return gulp.src(sources["babel-lib"])
.pipe(presetES2015({
livereload: livereload,
basePath: __dirname
}))
.pipe(gulp.dest("./lib/"));
});
gulp.task("jade-views", function() {
return gulp.src(sources["jade-views"])
.pipe(presetJade({
livereload: livereload,
basePath: __dirname
}))
.pipe(gulp.dest("lib/views/"));
});
gulp.task("sass-main", function() {
return gulp.src(sources["sass-main"])
.pipe(presetSCSS({
livereload: livereload,
basePath: __dirname
}))
.pipe(gulp.dest("lib/stylesheets/"));
});
gulp.task("riot-components", function() {
return gulp.src(sources["riot-components"])
.pipe(presetRiot({
livereload: livereload,
basePath: __dirname
}))
.pipe(gulp.dest("lib/components/"));
});
gulp.task('watch', ['babel-lib', 'babel-main', 'jade-views', 'sass-main', 'riot-components'], function () {
livereload.listen();
Object.keys(sources).forEach(function(source) {
gulp.watch(sources[source], [source]);
});
});
gulp.task('default', ['watch', 'electron']);