Мне нужна возможность использовать browserSync с поддержкой php и некоторыми специфическими переписываниями URL. Я придумал browserSync с пакетами Gulp-Connect-Php плюс Gulp-Connect + modrewrite. Вот мой конфиг:Ошибка Gulp-Connect-Php + browserSync + Gulp-Connect для использования
var
browserSync = require('browser-sync'),
phpconnect = require('gulp-connect-php'),
connect = require('gulp-connect'),
modrewrite = require('connect-modrewrite'),
phpconnect.server({base:'dist/',port: 8010}, function(){
connect.server({
port: 8001,
middleware: function() {
return [
modrewrite([
'^/admin/(.*) - [L]',
'^([^.]*|.*?\.php)$ http://localhost:8010$1 [P,NC]'
])
];
}
})
browserSync({
injectChanges: true,
proxy: '127.0.0.1:8010'
});
})
Это прекрасно работает и именно так, как мне нужно. Следующая проблема возникает время от времени, когда я запускаю его:
[error] You tried to start Browsersync twice! To create multiple instances, use browserSync.create().init()
events.js:141
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE :::8001
Другими словами, browserSync начинается перед глотком-подключения и использует порт 8010, который должен быть использован глотком-подключения и проглатывать-подключения не запускается.
Я установил НПМ sleep
пакет и добавил следующую строку перед запуском browserSync:
sleep.sleep(15)
другими словами, я добавил задержку в 15 секунд перед запуском browserSync. Это работает, но я уверен, что есть более элегантное решение.
Пожалуйста, советую.