const Promise = require("bluebird"); const path = require("path"); const gulp = require("gulp"); const webpackStream = require("webpack-stream-fixed"); const webpack = require("webpack"); const gulpNamedLog = require("gulp-named-log"); const gulpRename = require("gulp-rename"); const gulpNodemon = require("gulp-nodemon"); const gulpCached = require("gulp-cached"); const presetSCSS = require("@joepie91/gulp-preset-scss"); const awaitServer = require("await-server"); const gulpLivereload = require("gulp-livereload"); const patchLivereloadLogger = require("@joepie91/gulp-partial-patch-livereload-logger"); patchLivereloadLogger(gulpLivereload); let config = { scss: { source: "./src/scss/**/*.scss", destination: "./public/css/" } } // FIXME: Copy simple-line-icons let serverLogger = gulpNamedLog("server"); gulp.task("nodemon", ["scss", "livereload"], () => { gulpNodemon({ script: "server.js", ignore: [ "gulpfile.js", "node_modules", "public", "src/frontend" ], ext: "js pug" }).on("start", () => { Promise.try(() => { serverLogger.info("Starting..."); return awaitServer(3000); }).then(() => { serverLogger.info("Started!"); gulpLivereload.changed("*"); }); }); }); gulp.task("scss", () => { return gulp.src("./src/scss/style.scss") .pipe(presetSCSS({ livereload: gulpLivereload, cacheKey: false })) .pipe(gulp.dest(config.scss.destination)); }); gulp.task("livereload", () => { gulpLivereload.listen({ quiet: true }); }); gulp.task("webpack-watch", ["livereload"], () => { return gulp.src("./src/frontend/index.js") .pipe(webpackStream(require("./webpack.config.js"))) .pipe(gulpNamedLog("webpack").stream()) .pipe(gulpLivereload()) .pipe(gulp.dest("./public/js/")); }); gulp.task("watch-css", () => { gulp.watch(config.scss.source, ["scss"]); }); gulp.task("watch", ["webpack-watch", "nodemon", "watch-css"]); gulp.task("default", ["watch"]);