遵循gulp-express规范的usage部分我尝试使用livereload设置快速开发服务器。我有单独的任务,做javascript uglification,将scss转换为css并缩小html,所以我只需要从我的dist文件夹运行服务器。
到目前为止一切正常,除了livereload(浏览器不会在css更改时重新加载)。
我的大口任务:
gulp.task('server', function() {
server.run(['main.js'],[],[1337]);
gulp.watch(['/dist/**/*.html'], server.notify);
gulp.watch(['/dist/**/*.css'], server.notify);
gulp.watch(['/dist/**/*.js'], server.notify);
gulp.watch(['/dist/assets/images/*.*'], server.notify);
});
main.js:
// packages
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var morgan = require('morgan');
var path = require('path');
//app configuration
// body parser
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
//CORS requests
app.use(function(req, res, next) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With, content-type, Authorization');
next();
});
//log all requests to console
app.use(morgan('dev'));
app.use(express.static(__dirname + '/dist'));
//catchall route
app.get('*', function(req, res) {
res.sendFile(path.join(__dirname + '/dist/index.html'));
});
//start the server
app.listen(1337);
console.log('Running on port 1337!');
运行gulp服务器时,我在控制台中收到以下消息:
livereload [tiny-lr]收听35729 ... 在1337端口上运行!
我可以在浏览器中加载页面,但它不会在代码更改时自动刷新。
我做错了什么?
答案 0 :(得分:0)
你正在解决你的问题,我知道这篇文章已经有9个月了,但是如果它对任何人都有用我会发布一个解决方案,它对我有用,我和你有同样的问题,这个是我的解决方案:
gulp.task('webserver', function() {
var server = gls(['app.js','public', 3000], undefined, {});
server.start();
//Watch files
gulp.watch([paths.images], function (file) {
gulp.start('custom-images');
server.notify.apply(server, [file]);
});
gulp.watch([paths.scripts], function (file) {
gulp.start('custom-js');
server.notify.apply(server, [file]);
});
gulp.watch([paths.custom_styles], function (file) {
gulp.start('custom-styles');
server.notify.apply(server, [file]);
});
gulp.watch([paths.templates], function (file) {
gulp.start('custom-templates');
server.notify.apply(server, [file]);
});
gulp.watch([paths.index], function (file) {
gulp.start('usemin');
server.notify.apply(server, [file]);
});
gulp.watch([paths.build_index], function (file) {
gulp.start('convert-index');
server.notify.apply(server, [file]);
});
});
正如您所看到的,根据我的理解,问题是您需要将回调函数传递给 gulp.watch(),然后调用 server.notify.apply(服务器) ,[文件]),注意你正在传递服务器和你修改过的文件,我想这是因为你需要告诉liveReload这是你改变的文件。希望这个帮助,欢呼。 sigfried
我刚发现这个,我认为这也是一个很好的解决方案: https://stackoverflow.com/a/27488331/4613549