Gulp + BrowserSync, служит на пути

Я использую Gulp и BrowserSync для обслуживания моего webapp в localhost:9000.
Как я могу использовать webapp вместо localhost:9000/some/multi/level/path?

Ответ 1

В настройках браузера параметры передаются в startPath, чтобы начать с другого URL-адреса, который '/'.

Это не изменяет то, что ваш сервер обслуживает только путь, с которого начинается BrowserSync.

http://www.browsersync.io/docs/options/#option-startPath

Ответ 2

Статический сервер Browsersync может быть настроен для обслуживания страниц из любого произвольного подпути. При инициализации статического сервера Browsersync добавьте определение маршрута, где ключ является фрагментом url для соответствия, и значение является каталогом, который будет обслуживаться (путь должен относиться к текущему рабочему каталогу).

Попробуйте что-то вроде этого:

var gulp = require('gulp');
var browsersync = require('browser-sync').create();

gulp.task('watch', function() {
  browsersync.init({
    files: './*.html',
    startPath: '/some/multi/level/path',
    server: {
      baseDir: '-',
      routes: {
        '/some/multi/level/path': '.'
      }
    }
  });
});

Запуск gulp watch запустит Browsersync и откроет страницу с содержимым ./, отображаемым на url http://localhost:3000/some/multi/level/path.

baseDir должен быть установлен на непустую строку и не должен быть допустимым путем. Значения Falsey (null, false и пустые строки) не будут работать.

Фрагмент выше - рабочий файл gulpfile и был протестирован против Browsersync v2.18.5 и gulp v3.9.1. Здесь полный текст.

Ответ 3

Кажется, опция недоступна. startPath изменит только тот URL, который открывается браузером.

Наконец я придумал простое решение:

Просто создайте символическую ссылку из каталога some/multi/level/path на your app files. Затем, перейдя в localhost:9000/some/multi/level/path, вы получите те же файлы, что и для localhost:9000

Ответ 4

+1.

Для моего тестового сервера я использую gulp -webserver:

 gulp.src('./public')
    .pipe(webserver({
      host: 'localhost',
      port: '8000',
      path: '/myapp', 
      fallback: 'index.html'
      directoryListing: false,
      https: true
    }))

Затем я получаю доступ к приложению из

https://localhost:8000/myapp/view

но когда я использую Browsersync для режима dev, я должен использовать

https://localhost:9000/view

Было бы здорово, если бы это было одно и то же, тогда, возможно, я прекратил бы использовать gulp -webserver.