I use browser-sync (https://github.com/shakyShane/browser-sync) in my gulp file for development purposes. I want to use html5mode within my angular app. For that server needs to route multiple url patterns to single html file. Staging and production servers already do that but I would also like to have this up and running during development.
Here is how I run browser-sync
server (part of gulpfile.js
):
gulp.task('serve', function () {
browserSync.init(null, {
server: {
baseDir: [APP_PATH]
}
});
// watch only for app specific codes;
...
});
Just to make it more clear, at my app js I instruct angular to use html5mode for routing:
$locationProvider.html5Mode(true);
Within my APP_PATH I have single index.html
which is served when I access browser-sync
server. What I need is that browser-sync
serves this single file for each paths.
So for example if I try to reach /users/2
path starting from root path everything is fine; however if I refresh page or try to reach /users/2
directly, browser-sync
tells that it cannot find proper document to serve - this is all good and understandable but I wonder if there is any way to tell browser-sync
built-in server to serve one file only. If not, can anyone suggest other options? Should I simply run express server and tell browser-sync
to proxy through it?
Browser synchronization (often simply called sync) is a free cloud service provided by a web browser vendor for sharing settings and data across multiple installs. This is typically used to maintain a consistent browser setup on multiple devices. The user must be logged-in to their account to sync a browser.
You can use https://github.com/tinganho/connect-modrewrite.
var modRewrite = require('connect-modrewrite');
gulp.task('serve', function () {
browserSync.init(null, {
server: {
baseDir: [APP_PATH],
middleware: [
modRewrite([
'!\\.\\w+$ /index.html [L]'
])
]
}
});
// watch only for app specific codes;
...
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With