12

我正在使用 Gulp 和 BrowserSync 在localhost:9000.
我怎样才能为 webapp 提供服务localhost:9000/some/multi/level/path呢?

4

4 回答 4

7

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必须设置为非空字符串,并且不需要是有效路径。虚假值(nullfalse空字符串)将不起作用。

上面的代码片段是一个有效的 gulpfile,并针对 Browsersync v2.18.5 和 gulp v3.9.1 进行了测试。这是完整的要点

于 2017-01-05T20:28:37.773 回答
2

在您的浏览器同步选项中传入startPath以使其从 '/' 的不同 URL 开始。

这不会改变您的服务器只为 BrowserSync 开始的路径提供服务。

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

于 2015-07-30T21:58:26.837 回答
1

似乎该选项不可用。 startPath只会更改 browsersync 打开的 URL。

我终于想出了一个简单的解决方案:

只需创建一个从some/multi/level/path目录到your app files. 然后 go tolocalhost:9000/some/multi/level/path将提供与 go to 相同的文件localhost:9000

于 2017-06-07T07:24:23.413 回答
1

对此+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 用于开发模式时,我必须使用

https://localhost:9000/view

如果它是一样的,那就太好了,那么也许我会停止使用 gulp-webserver。

于 2015-12-05T02:46:58.917 回答