我使用Gulp(3.8.11)渲染SASS和JavaScript。它在Apache2,PHP和MySQL旁边的Ubuntu 14.04.2 LTS上在服务器端运行。
每次更改文件时(使用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);
});
});
SSHFS的写延迟。
因此,您可能需要将代码执行包装在超时中,以解决此问题。
编辑:如Null Pointer异常所评论,我澄清我的答案:
通过SSHFS,文件的实际内容存在写入延迟。因此,在实际将内容写入服务器上的文件之前,可能会触发监视。因此,更改可能不会包含在任务的运行中。
要解决此延迟,gulp任务中的超时可能会增加内容写入文件后执行任务的机会。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句