我使用Gulp(3.8.11)来渲染SASS和JavaScript。它在Ubuntu 14.04.2 LTS上运行服务器端,旁边是Apache2,PHP和MySQL。
每次我更改文件(使用Sublime Text 2通过SSHFS远程更改)时,gulp.watch将启动指定的任务。在结果中,有50%的可能性缺少更改的文件(对于SASS和JS两个任务)。
当我手动运行gulp(不使用gulp.watch)时,我得到了预期的结果。在本地使用相同的项目运行gulp.watch,一切正常。
没有错误消息,只是一个在浏览器中看起来很棒的不完整的渲染JS或CSS文件。令人沮丧。
编辑:对观察任务进行的更改解决了问题。
var path = {
js: [
'src/js/*.js',
'src/js/*/*.js',
'src/js/*/*/*.js'
],
sass: [
'src/sass/reset.scss',
'src/sass/constant.scss',
'src/sass/base.scss',
'src/sass/*.scss'
]
};
gulp.task('watch', function() {
livereload.listen();
gulp.watch(path.js, function() {
setTimeout(function () {
gulp.start('js');
}, 100);
});
gulp.watch(path.sass, function() {
setTimeout(function () {
gulp.start('sass');
}, 100);
});
});
答案 0 :(得分:1)
可能写出SSHFS的延迟。
因此,您可能希望将代码执行包装在Timeout中以解决此问题
编辑: 正如Null Pointer例外,我澄清了我的答案:
在SSHFS上,文件的实际内容存在写延迟。因此,在将内容实际写入服务器上的文件之前,可能会触发监视。因此,更改可能不会包含在任务的运行中。
要解决此延迟,gulp任务中的超时可能会增加在将内容写入文件后执行任务的机会。