Skip to content

Commit 5700de6

Browse files
KoslunAwk34
authored andcommitted
feat(project): replace livereload with browser-sync
Closes #1955
1 parent 2727cc6 commit 5700de6

File tree

4 files changed

+46
-52
lines changed

4 files changed

+46
-52
lines changed

Diff for: templates/app/_package.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@
6565
"babel-core": "^6.6.5",
6666
"babel-eslint": "^6.0.4",
6767
"babel-register": "^6.6.5",
68+
"browser-sync": "^2.8.0",
69+
"bs-fullscreen-message": "^1.0.0",
6870
<%_ if(filters.flow) { -%>
6971
"flow-bin": "^0.27.0",
7072
"babel-plugin-syntax-flow": "^6.8.0",
@@ -92,7 +94,6 @@
9294
"gulp-inject": "^4.0.0",
9395
"gulp-istanbul": "~0.10.3",
9496
"gulp-istanbul-enforcer": "^1.0.3",
95-
"gulp-livereload": "^3.8.0",
9697
"gulp-load-plugins": "^1.0.0-rc.1",
9798
"gulp-clean-css": "^2.0.6",
9899
"gulp-mocha": "^2.1.3",
@@ -159,7 +160,6 @@
159160
<%# END WEBPACK %>
160161
"through2": "^2.0.1",
161162
"open": "~0.0.4",
162-
"connect-livereload": "^0.5.3",
163163
"istanbul": "~0.4.1",
164164
"chai": "^3.2.0",
165165
"sinon": "^1.16.1",
@@ -182,6 +182,7 @@
182182
"jasmine-spec-reporter": "^2.4.0",<% } %>
183183
"phantomjs-prebuilt": "^2.1.4",
184184
"proxyquire": "^1.0.1",
185+
"strip-ansi": "^3.0.1",
185186
"supertest": "^1.1.0"<% if(filters.ts) { %>,
186187
"tslint": "^3.5.0",
187188
"typings": "^0.8.1"<% } %>

Diff for: templates/app/gulpfile.babel.js

+3-7
Original file line numberDiff line numberDiff line change
@@ -229,8 +229,7 @@ gulp.task('webpack:dev', function() {
229229
return gulp.src(webpackDevConfig.entry.app)
230230
.pipe(plugins.plumber())
231231
.pipe(webpack(webpackDevConfig))
232-
.pipe(gulp.dest('.tmp'))
233-
.pipe(plugins.livereload());
232+
.pipe(gulp.dest('.tmp'));
234233
});
235234

236235
gulp.task('webpack:dist', function() {
@@ -311,7 +310,7 @@ gulp.task('clean:tmp', () => del(['.tmp/**/*'], {dot: true}));
311310

312311
gulp.task('start:client', cb => {
313312
whenServerReady(() => {
314-
open('http://localhost:' + config.port);
313+
open('http://localhost:' + config.browserSyncPort);
315314
cb();
316315
});
317316
});
@@ -347,12 +346,9 @@ gulp.task('start:server:debug', () => {
347346
gulp.task('watch', () => {
348347
var testFiles = _.union(paths.client.test, paths.server.test.unit, paths.server.test.integration);
349348

350-
plugins.livereload.listen();
351-
352349
plugins.watch(_.union(paths.server.scripts, testFiles))
353350
.pipe(plugins.plumber())
354-
.pipe(lintServerScripts())
355-
.pipe(plugins.livereload());
351+
.pipe(lintServerScripts());
356352

357353
plugins.watch(_.union(paths.server.test.unit, paths.server.test.integration))
358354
.pipe(plugins.plumber())

Diff for: templates/app/server/config/environment/index.js

+3
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ var all = {
1919
// Root path of server
2020
root: path.normalize(`${__dirname}/../../..`),
2121

22+
// Browser-sync port
23+
browserSyncPort: process.env.BROWSER_SYNC_PORT || 3000,
24+
2225
// Server port
2326
port: process.env.PORT || <%= devPort %>,
2427

Diff for: templates/app/server/config/express.js

+37-43
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ var MongoStore = connectMongo(session);<% } else if(filters.sequelize) { %>
2525
import sqldb from '../sqldb';
2626
import expressSequelizeSession from 'express-sequelize-session';
2727
var Store = expressSequelizeSession(session.Store);<% } %>
28+
import stripAnsi from 'strip-ansi';
29+
30+
var browserSync = require('browser-sync').create();
2831

2932
export default function(app) {
3033
var env = app.get('env');
@@ -93,52 +96,43 @@ export default function(app) {
9396
const webpackConfig = makeWebpackConfig({ DEV: true });
9497
const compiler = webpack(webpackConfig);
9598

96-
const pkgConfig = require('../../package.json');
97-
const livereloadServer = require('tiny-lr')();
98-
var livereloadServerConfig = {
99-
ignore: [
100-
/^\/api\/(.*)/,
101-
/\.js(\?.*)?$/, /\.css(\?.*)?$/, /\.svg(\?.*)?$/, /\.ico(\?.*)?$/, /\.woff(\?.*)?$/,
102-
/\.png(\?.*)?$/, /\.jpg(\?.*)?$/, /\.jpeg(\?.*)?$/, /\.gif(\?.*)?$/, /\.pdf(\?.*)?$/
103-
],
104-
port: (pkgConfig.livereload || {}).port
105-
};
106-
var triggerLiveReloadChanges = function() {
107-
livereloadServer.changed({
108-
body: {
109-
files: [webpackConfig.output.path + webpackConfig.output.filename]
110-
}
111-
});
112-
};
113-
if(livereloadServerConfig.port) {
114-
livereloadServer.listen(livereloadServerConfig.port, triggerLiveReloadChanges);
115-
} else {
116-
/**
117-
* Get free port for livereload
118-
* server
119-
*/
120-
livereloadServerConfig.port = require('http').createServer().listen(function() {
121-
/*eslint no-invalid-this:0*/
122-
this.close();
123-
livereloadServer.listen(livereloadServerConfig.port, triggerLiveReloadChanges);
124-
}).address().port;
125-
}
126-
12799
/**
128-
* On change compilation of bundle
129-
* trigger livereload change event
100+
* Run Browsersync and use middleware for Hot Module Replacement
130101
*/
131-
compiler.plugin('done', triggerLiveReloadChanges);
132-
133-
app.use(webpackDevMiddleware(compiler, {
134-
stats: {
135-
colors: true,
136-
timings: true,
137-
chunks: false
138-
}
139-
}));
102+
browserSync.init({
103+
open: false,
104+
logFileChanges: false,
105+
proxy: 'localhost:' + config.port,
106+
ws: true,
107+
middleware: [
108+
webpackDevMiddleware(compiler, {
109+
noInfo: false,
110+
stats: {
111+
colors: true,
112+
timings: true,
113+
chunks: false
114+
}
115+
})
116+
],
117+
port: config.browserSyncPort,
118+
plugins: ['bs-fullscreen-message']
119+
});
140120

141-
app.use(require('connect-livereload')(livereloadServerConfig));
121+
/**
122+
* Reload all devices when bundle is complete
123+
* or send a fullscreen error message to the browser instead
124+
*/
125+
compiler.plugin('done', function (stats) {
126+
console.log('webpack done hook');
127+
if (stats.hasErrors() || stats.hasWarnings()) {
128+
return browserSync.sockets.emit('fullscreen:message', {
129+
title: "Webpack Error:",
130+
body: stripAnsi(stats.toString()),
131+
timeout: 100000
132+
});
133+
}
134+
browserSync.reload();
135+
});
142136
}
143137

144138
if ('development' === env || 'test' === env) {

0 commit comments

Comments
 (0)