我在wordpress环境中运行了一个基本的gulp.js设置。除了重新加载我更改的.php文件的方式之外,一切都按照我想要的方式工作。我把它设置成这样:
gulp.task('php', function(){
gulp.src('../*.php').pipe(livereload(server));
});
gulp.task('watch', function() {
server.listen(35729, function (err) {
if (err) {
return console.log(err)
};
gulp.watch('styl/src/*.scss', ['styl']);
gulp.watch('js/src/*.js', ['js']);
gulp.watch('../*.php', ['php']);
});
});
我基本上只是在保存任何php文件时重新加载页面,但每当我保存一个时,它会自动刷新每个php页面,无论我打开它,是否已保存,或其他任何东西:
[gulp] footer.php was reloaded.
... Reload /Users/KBD/sites/vi/cnt/themes/vi/footer.php ...
[gulp] front-page.php was reloaded.
... Reload /Users/KBD/sites/vi/cnt/themes/vi/front-page.php ...
[gulp] functions.php was reloaded.
... Reload /Users/KBD/sites/vi/cnt/themes/vi/functions.php ...
[gulp] header.php was reloaded.
... Reload /Users/KBD/sites/vi/cnt/themes/vi/header.php ...
[gulp] index.php was reloaded.
... Reload /Users/KBD/sites/vi/cnt/themes/vi/index.php ...
[gulp] social-media.php was reloaded.
... Reload /Users/KBD/sites/vi/cnt/themes/vi/social-media.php ...
[gulp] template-contact.php was reloaded.
... Reload /Users/KBD/sites/vi/cnt/themes/vi/template-contact.php ...
[gulp] template-interior.php was reloaded.
... Reload /Users/KBD/sites/vi/cnt/themes/vi/template-interior.php ...
有没有办法可以让它只活动保存已保存的页面?这似乎是我唯一无法用gulp工作的工作方式;不过,我喜欢跑得比咕噜快多少。
编辑:@SirTophamHattgulp.task('watch', function() {
server.listen(35729, function (err) {
if (err) {
return console.log(err)
};
gulp.watch('styl/src/*.scss', ['styl']);
gulp.watch('js/src/*.js', ['js']);
gulp.watch('js/src/*.coffee', ['coffee']);
gulp.src('../*.php').pipe(watch()).pipe(livereload(server));
});
});
答案 0 :(得分:4)
请改用gulp-watch
plugin。它可以更好地观看单个文件,并且只将这些文件传递给您的结果。此外,如果您使用watch({glob: ['files']}).pipe(...)
代替gulp.src(['files']).pipe(watch()).pipe(...)
,它也可以关注新的文件。
另一种方法是使用gulp-newer
或gulp-changed
,它们都使用时间戳来确定文件是否已更改。我没有亲自使用过,但gulp-newer
似乎有更多的功能。但是,两者都无法检测到新文件。
答案 1 :(得分:0)
参考here,您只需watch
他们:
gulp.watch('../*.php').on('change', function(file) {
livereload(server).changed(file.path);
});
此外,目前gulp-livereload
支持自动创建tiny-lr
服务器的实例。因此,您不需要明确tiny-lr
:
livereload = require('gulp-livereload');
gulp.task('task foo', function() {
gulp.src('foo').pipe(...).pipe(livereload());
});
gulp.task('watch', function() {
gulp.watch('foo', ['task foo'])
gulp.watch('bar').on('change', function(file) {
livereload().changed(file.path);
});
});