请教一个gulpfile.js配置的问题
我的gulpfile.js配置文件定义了三个五个任务:
var gulp = require('gulp'),
concat = require('gulp-concat'),
rename = require('gulp-rename'),
uglify = require('gulp-uglify');
var nodemon = require('gulp-nodemon');
var browserSync = require('browser-sync').create();
var reload = browserSync.reload;
var config = require('./config');
// Load plugins
var $ = require('gulp-load-plugins')();
// 启动production环境
gulp.task("prod", ['compile', 'start-prod'], function() {
});
// 启动development环境
gulp.task('dev', ['compile', 'start-dev', 'hot-replace'], function() {
});
// 启动dev环境
gulp.task('start-dev', function(cb) {
return nodemon({
script: './bin/www',
env: {
"NODE_ENV": "development",
"PORT": config.development.port
}
});
});
// 启动生产环境
gulp.task('start-prod', function () {
return nodemon({
script: 'pm2 start ./bin/www --name flexible-web',
env: {
"NODE_ENV": "production",
"PORT": config.production.port
}
});
});
// 编译
function compile() {
return gulp.src('./public/js/*.js')
.pipe($.plumber())
.pipe($.babel({
presets: ['es2015']
}))
.pipe(gulp.dest('./public/dist/js/'));
}
/* es6编译 */
gulp.task('compile', function() {
compile();
});
gulp.task('hot-replace', function () {
console.log('the hot-replace port is : ', config.development.port + 1);
browserSync.init({
proxy: "localhost:" + config.development.port,
port: config.development.port + 1
});
gulp.watch("./public/html/*.html").on('change', reload);
gulp.watch("./views/*.ejs").on('change', reload);
gulp.watch("./public/*/*.js").on('change', function() {
compile();
reload();
});
});
我就是想用dev或者prod这两个任务,把服务器跑起来,顺便在dev环境的时候,能够监听静态文件的变化,推送到浏览器刷新,但是,我这个样子配置后,浏览器是打开了,但是,一直在加载的状态,需要点击刷页面,才能进入页面,然后,修改了静态文件也不能把更新的内容推送到浏览器. 请问,这个怎么配置? 我想通过gulp dev就可以把任务都完成顺便启动服务器.
2 回复
除非你要用browsersync自动刷新多个浏览器,不然你还不如砍了刷新代码,手动刷新浏览器呢。
@steambap 可是我确实就是想刷新浏览器加监听文件,顺便再启动一下服务,而且刷新浏览器的时候不需要重启后台,哎,现在只能用require(’./bin/www’)这个样子才能实现启动服务器.不知为何?