'use strict'; const gulp = require("gulp"); const path = require("path"); const presetES2015 = require("@joepie91/gulp-preset-es2015"); const presetJade = require("@joepie91/gulp-preset-jade"); const presetSCSS = require("@joepie91/gulp-preset-scss"); const webpackStream = require("webpack-stream"); const webpack = require("webpack"); const rename = require("gulp-rename"); const nodemon = require("gulp-nodemon"); const livereload = require("gulp-livereload"); const net = require("net"); var nodemonRestarting = false; function tryReload() { if (nodemonRestarting === false) { livereload.changed(arguments[0].path); } } /* The following resolves JacksonGariety/gulp-nodemon#33 */ process.once("SIGINT", function() { process.exit(0); }); gulp.task("jade", function() { return gulp.src("./src/**/*.jade") .pipe(presetJade({ basePath: __dirname })) .pipe(gulp.dest("./dist")); }); gulp.task("scss", function() { return gulp.src("./src/**/*.scss") .pipe(presetSCSS({ basePath: __dirname })) .pipe(gulp.dest("./dist")); }); gulp.task('webpack', function(){ return gulp.src("./src/index.js") .pipe(webpackStream({ watch: true, module: { preLoaders: [{ test: /\.tag$/, loader: "riotjs-loader", exclude: /node_modules/, query: { type: "babel", template: "jade" } }], loaders: [ { test: /\.js$/, loader: "babel-loader" }, { test: /\.json$/, loader: "json-loader" } ] }, plugins: [ new webpack.ProvidePlugin({riot: "riot"}) ], resolveLoader: { root: path.join(__dirname, "node_modules") }, resolve: { extensions: [ "", ".tag", ".web.js", ".js", ".web.json", ".json" ] }, debug: false })) .pipe(rename("bundle.js")) .pipe(gulp.dest("./dist")); }); function checkServerUp(){ setTimeout(function(){ var sock = new net.Socket(); sock.setTimeout(50); sock.on("connect", function(){ nodemonRestarting = false; console.log("Triggering page reload..."); tryReload("*"); sock.destroy(); }) .on("timeout", checkServerUp) .on("error", checkServerUp) .connect(4000); }, 70); } gulp.task("nodemon", ["jade", "scss"], function() { nodemon({ script: "./local-server.js", delay: 500, ignore: ["dist/*"] }).on("restart", function() { nodemonRestarting = true; }).on("start", checkServerUp); }) gulp.task('watch', ["nodemon"], function () { livereload.listen(); gulp.watch("./src/**/*.scss", ["scss"]); gulp.watch("./src/**/*.jade", ["jade"]); gulp.watch(['./dist/**/*']).on('change', tryReload); }); gulp.task("default", ["watch", "webpack"]);