2014-02-15 3 views
3

У меня есть базовая настройка gulp.js, работающая в моей среде wordpress. Все работает так, как хотелось бы, за исключением того, как я перезагружаю измененные .php-файлы. Я его настроить так:Gulp.js: Reload измененный php/html страницы

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 ... 

есть ли способ я могу это только LiveReload страницы, которая была сохранена? Кажется, это единственное, что я не могу заставить работать, как я хочу с глотком; Мне нравится, насколько быстрее он работает, чем хрюкать.

EDIT: @SirTophamHatt

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('js/src/*.coffee', ['coffee']); 
     gulp.src('../*.php').pipe(watch()).pipe(livereload(server)); 

    }); 
}); 
+0

Я заинтересован в том, чтобы ваша полную конфигурации глотка, как я пытаюсь использовать глоток, чтобы запустить сервер PHP и LiveReload, когда я изменить PHP/PHTML, CSS, и js-файлы. – SirTophamHatt

+0

Я поставил свою задачу на часы выше, потому что весь файл, похоже, много для публикации, но я могу найти способ опубликовать больше, если вы захотите! – thesublimeobject

+0

Не могли бы вы разместить его на jsfiddle или plunkr? Это было бы огромной помощью для меня, чтобы работать с PHP. – SirTophamHatt

ответ

4

Используйте gulp-watch plugin вместо этого. Это намного лучше для просмотра отдельных файлов, и только передача этих результатов. Кроме того, он может следить за новыми файлами, если вы используете watch({glob: ['files']}).pipe(...) вместо gulp.src(['files']).pipe(watch()).pipe(...).

Альтернативой является использование gulp-newer или gulp-changed, которые используют временные метки для определения того, был ли файл изменен или нет. Я лично не использовал его, но у gulp-newer появилась немного больше функциональности. Однако они не смогут обнаружить новые файлы.

+0

Это именно то, что я хотел, спасибо. – thesublimeobject

0

REFS 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); 
    }); 
}); 
+0

небольшая коррекция для кода выше: «изменено» (file.path) 'not' change (file.path) ' –

+0

@IvanV. Да, спасибо =) – okm

+0

Это: livereload.changed (file.path); NOT: livereload(). Changed (file.path); –

Смежные вопросы