Skip to content

Instantly share code, notes, and snippets.

@sogko
Last active November 8, 2022 12:31
Show Gist options
  • Save sogko/b53d33d4f3b40d3b4b2e to your computer and use it in GitHub Desktop.
Save sogko/b53d33d4f3b40d3b4b2e to your computer and use it in GitHub Desktop.
gulp + expressjs + nodemon + browser-sync
'use strict';
// simple express server
var express = require('express');
var app = express();
var router = express.Router();
app.use(express.static('public'));
app.get('/', function(req, res) {
res.sendfile('./public/index.html');
});
app.listen(5000);
'use strict';
var gulp = require('gulp');
var browserSync = require('browser-sync');
var nodemon = require('gulp-nodemon');
gulp.task('default', ['browser-sync'], function () {
});
gulp.task('browser-sync', ['nodemon'], function() {
browserSync.init(null, {
proxy: "http://localhost:5000",
files: ["public/**/*.*"],
browser: "google chrome",
port: 7000,
});
});
gulp.task('nodemon', function (cb) {
var started = false;
return nodemon({
script: 'app.js'
}).on('start', function () {
// to avoid nodemon being started multiple times
// thanks @matthisk
if (!started) {
cb();
started = true;
}
});
});
<html>
<head>
<link rel="stylesheet" href="site.css"/>
</head>
<body>
<!-- some dummy non-conforming quick dirty html code to test browser-sync. dont't judge me. -->
<b>lorem</b> ipsum upsum dumsum
</body>
</html>
<!-- put this under /public/* -->
{
"name": "gulp-expressjs-nodemon-browser-sync",
"version": "0.0.0",
"description": "",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": {
"name": "Hafiz Ismail",
"email": "hafiz@wehavefaces.net",
"url": "http://wehavefaces.net"
},
"license": "ISC",
"dependencies": {
"express": "^4.8.2"
},
"devDependencies": {
"browser-sync": "^1.3.3",
"gulp": "^3.8.7",
"gulp-nodemon": "^1.0.4"
}
}
/* some css */
/* put this under /public/* */
body {
font-family: 'Helvetica';
color: red;
font-size:24px;
}
@Dmitri801
Copy link

Heres a 2019 way of setting up the gulpfile since that code no longer works for running multiple tasks

const gulp = require("gulp");
const browserSync = require("browser-sync");
var nodemon = require("gulp-nodemon");

gulp.task("nodemon", cb => {
  let started = false;

  return nodemon({
    script: "server.js"
  }).on("start", () => {
    if (!started) {
      cb();
      started = true;
    }
  });
});

gulp.task(
  "browser-sync",
  gulp.series("nodemon", () => {
    browserSync.init(null, {
      proxy: "http://localhost:7000",
      files: ["public/**/*.*"],

      port: 9000
    });
  })
);

gulp.task("serve", gulp.series("browser-sync", () => {}));

@danydodson
Copy link

Thanks @Dmitri801, works great!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment