Моя главная цель здесь — адаптировать рабочий процесс разработки gulp-webapp Йомана для запуска PHP.
В частности, я хочу иметь возможность использовать gulp-php-connect
с несколькими базовыми каталогами (для скомпилированного CSS из Sass) и маршрутами (для зависимостей Bower), если это вообще возможно.
Я могу запустить PHP с Gulp, используя плагин gulp-connect-php, например:
gulp.task('connect-php', function() {
connectPHP.server({
hostname: '0.0.0.0',
bin: '/Applications/MAMP/bin/php/php5.5.3/bin/php',
ini: '/Applications/MAMP/bin/php/php5.5.3/conf/php.ini',
port: 8000,
base: 'dev'
});
});
Тем не менее, я хотел бы воспользоваться отличной, но довольно запутанной архитектурой рабочего процесса разработки gulp-webapp, которая опирается на BrowserSync, компилятор Sass (компилируется в файл .css в папку .tmp для разработки), автоматический префикс и использует кучу других полезных плагинов.
Вот часть, которую я хотел бы адаптировать для использования gulp-connect-php
или любого другого PHP:
gulp.task('serve', ['styles'],function () {
browserSync({
notify: false,
port: 9000,
server: {
baseDir: ['.tmp', 'app'],
routes: {
'/bower_components': 'bower_components'
}
}
});
// watch for changes
gulp.watch([
'app/*.html',
'.tmp/styles/**/*.css',
'app/scripts/**/*.js',
'app/images/**/*'
]).on('change', reload);
gulp.watch('app/styles/**/*.scss', ['styles', reload]);
gulp.watch('bower.json', ['wiredep', 'fonts', reload]);
});
BrowserSync имеет опцию прокси, которая позволяет мне запускать его с gulp-connect-php
сервером, что довольно удивительно. Но мне нужно gulp-connect-php
использовать несколько базовых каталогов и маршрутов, как это делает BrowserSync.
Пока я придумал это:
gulp.task('serve-php', ['styles','connect-php'],function () {
browserSync({
proxy: "localhost:8000"
});
// watch for changes
gulp.watch([
'app/*.php',
'app/styles/**/*.css',
'app/scripts/**/*.js',
'app/images/**/*'
]).on('change', reload);
gulp.watch('app/styles/**/*.scss', ['styles, reload]);
gulp.watch('bower.json', ['wiredep', 'fonts', reload]);
});
Чтобы временно решить проблему нескольких базовых каталогов, я изменил задачу styles
, чтобы она сохраняла скомпилированный файл .css в /app
вместо .tmp/
. Я бы предпочел иметь его во временной папке, потому что мне не нужен этот скомпилированный файл .css, висящий там с моими файлами Sass.
Что касается проблемы с маршрутами, я пытаюсь указать плагину wiredep
изменить путь, скажем, с bower_components/jquery/dist/jquery.js
на ../bower_components/jquery/dist/jquery.js
, но безуспешно.
Все, что я мог сделать, это вручную переименовать пути в index.php, и это все равно не работает. При запуске gulp serve
я получаю:
/bower_components/jquery/dist/modernizr.js - No such file or directory
... хотя я изменил путь в index.html на ../bower_components/jquery/dist/jquery.js
.
Я считаю, что это не работает, потому что сервер gulp-connect-php
не может видеть, что находится за пределами базовой папки.
Я пробую разные вещи, и хотя я был довольно расплывчат в названии этой темы, я думаю, что самым чистым решением было бы запустить несколько базовых каталогов и маршрутов с gulp-connect-php
, но я не знаю, возможно ли это.