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']);