-
-
Save sogko/b53d33d4f3b40d3b4b2e to your computer and use it in GitHub Desktop.
'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; | |
} |
This i awesome, thank you for posting!
Thank you, very helpful!
great gulp-recipe.
Just as info if you change the package nodemon
for gulp-nodemon
you'll get the nodemon log traces too in the console. worth it.
Very useful conversation..thank you all
man it works, now I'm able to simulate production server with express (and kills every ugly fat bug in a wheels)
I got a forever loading, any clue why?
Hi
This link has a part of my projects gulpfile: http://hastebin.com/iwocigizaq.coffee
I tried your code snippet to integrate browsersync with nodemon but all it leads to is an infinite load. No code(html/js/css) is loaded.
I have tried putting the port and the browser but to a no different result. I also unsuccessfully tried the code from https://github.com/sogko/gulp-recipes/blob/master/browser-sync-nodemon-expressjs/gulpfile.js .
Also my terminal log shows the nodemon is running with no error.
Can you please have a look at the gulp task and let me know if I'm doing something incorrectly.
Thanks
this is awesome. thanks.
This is great. I used it to make a my grabs a projects 'dist' folder and move it into the 'public' folder https://gist.github.com/garrettmac/07b475ad1043ad9c79a49ee61963e497
Great! I noticed my pages got out of date when I changed something that caused nodemon to restart, so I added:
nodemon.on...
.on('restart', function() {
browserSync.reload();
});
... Except it doesn't work because it calls the reload before the server has finished running up. Darn.
According to API, var browserSync = require('browser-sync');
is changed to var browserSync = require('browser-sync').create();
in 2.0.
For those who cannot run google chrome
in windows:
Internally, browser-sync
uses opn
library. So, the name of browser is different from OS to OS. As for windows, it's not google chrome
, it's just chrome
. Other browsers:
- Internet Explorer:
iexplore
- Firefox:
firefox
- Microsoft Edge: path.join(__dirname, ".bin", "edge.exe")
As Microsoft Edge doesn't have the way to call it by cmd start "some command for edge"
, so we need special command line program. I've downloaded it to projectRoot/.bin
and changed its name to "edge.exe". So, the name of edge is really odd. However, when every setup is done, everything works nicely.
Pretty Awesome!! Thanks.
For those who have the "loading forever" issue, I had to install nodemon, and then run nodemon in a separate terminal for the gulp task to load. Don't know exactly why though.
Nice job, thx!
Works great! Thx!
Works great! Thx!
Works great! Thx!
Does someone knows how to change the default behaviour of browser-sync which automatically delivers index.html as the root directory?
I tried changing that behaviour by simply defining a route inside my app.js but somehow it gets ignored.
Nice job, but i have a question?
It's just working when i access http://localhost:3000, when I access http://localhost:3000/users it not working, help me?
Looks promising but it breaks after running for the first time with this error:
`
Error: listen EADDRINUSE :::5000
at Object._errnoException (util.js:1022:11)
at _exceptionWithHostPort (util.js:1044:20)
at Server.setupListenHandle [as _listen2] (net.js:1351:14)
at listenInCluster (net.js:1392:12)
at Server.listen (net.js:1476:7)
at Function.listen (C:\xampp\htdocs\ndondo\aug2018\jobBoard\node_modules\express\lib\application.js:618:24)
at Object.<anonymous> (C:\xampp\htdocs\ndondo\aug2018\jobBoard\index.js:36:5)
at Module._compile (module.js:643:30)
at Object.Module._extensions..js (module.js:654:10)
at Module.load (module.js:556:32)
[18:01:36] [nodemon] app crashed - waiting for file changes before starting
`
Any ideas why ?
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", () => {}));
Thanks @Dmitri801, works great!
This is great! Thank you!