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.

125 lines
3.4 KiB
JavaScript

var gulp = require("gulp");
var fileUrl = require("file-url");
var path = require("path");
var xtend = require("xtend");
var rfr = require("rfr");
var riot = require("gulp-riot");
var sass = require("gulp-sass");
var jade = require("gulp-jade");
var babel = require("gulp-babel");
var livereload = require("gulp-livereload");
var cache = require("gulp-cached");
var remember = require("gulp-remember");
var plumber = require("gulp-plumber");
var rename = require("gulp-rename");
var namedLog = require("gulp-named-log");
var runProcess = rfr("src/gulp/run-process");
var patchLivereloadLogger = rfr("src/gulp/patch-livereload-logger");
var loggerOptions = {
basePath: __dirname
}
var babelLogger = namedLog("babel", loggerOptions);
var jadeLogger = namedLog("jade", loggerOptions);
var sassLogger = namedLog("sass", loggerOptions);
var riotLogger = namedLog("riot", loggerOptions);
var electronLogger = namedLog("electron", loggerOptions);
var livereloadLogger = namedLog("livereload", loggerOptions);
patchLivereloadLogger(livereload, livereloadLogger);
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"
}
function getLiveReloadStream() {
var lr = livereload({
quiet: true
});
return lr;
}
gulp.task("electron", ['babel-lib', 'babel-main', 'jade-views', 'sass-main', 'riot-components'], function() {
var electronProcess = runProcess(path.join(__dirname, "node_modules/.bin/electron"), [__dirname], {
logger: electronLogger,
env: xtend(process.env, {
NODE_ENV: "development"
})
});
});
gulp.task('babel-main', function() {
return gulp.src(sources["babel-main"])
.pipe(plumber(babelLogger.error))
.pipe(cache("babel-main"))
.pipe(babel({presets: ["es2015"]}))
.pipe(babelLogger.stream())
.pipe(getLiveReloadStream())
.pipe(rename("app.es5.js"))
.pipe(gulp.dest("./"));
});
gulp.task('babel-lib', function() {
return gulp.src(sources["babel-lib"])
.pipe(plumber(babelLogger.error))
.pipe(cache("babel-lib"))
.pipe(babel({presets: ["es2015"]}))
.pipe(babelLogger.stream())
.pipe(getLiveReloadStream())
.pipe(gulp.dest("lib/"));
});
gulp.task("jade-views", function() {
return gulp.src(sources["jade-views"])
.pipe(plumber(jadeLogger.error))
.pipe(cache("jade-views"))
.pipe(jade())
.pipe(jadeLogger.stream())
.pipe(getLiveReloadStream())
.pipe(gulp.dest("lib/views/"));
});
gulp.task("sass-main", function() {
return gulp.src(sources["sass-main"])
.pipe(plumber(sassLogger.error))
.pipe(cache("sass-main"))
.pipe(sass())
.pipe(sassLogger.stream())
.pipe(getLiveReloadStream())
.pipe(gulp.dest("lib/stylesheets/"));
});
gulp.task("riot-components", function() {
return gulp.src(sources["riot-components"])
.pipe(plumber(riotLogger.error))
.pipe(cache("riot-components"))
.pipe(riot({
type: "babel",
template: "jade",
style: "scss"
}))
.pipe(riotLogger.stream())
.pipe(getLiveReloadStream())
.pipe(gulp.dest("lib/components/"));
});
gulp.task('watch', function () {
livereload.listen();
gulp.watch(sources["babel-lib"], ["babel-lib"]);
gulp.watch(sources["babel-main"], ["babel-main"]);
gulp.watch(sources["jade-views"], ["jade-views"]);
gulp.watch(sources["sass-main"], ["sass-main"]);
gulp.watch(sources["riot-components"], ["riot-components"]);
});
gulp.task('default', ['watch', 'electron']);