Gulp + BrowserSync,路径为serve

12

我正在使用Gulp和BrowserSync在localhost:9000上为我的Web应用提供服务。
我该如何将Web应用服务路径更改为 localhost:9000/some/multi/level/path

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并在urlhttp://localhost:3000/some/multi/level/path上显示./的内容。 baseDir必须设置为非空字符串,不需要是有效路径。Falsey值(nullfalse和空字符串)将不起作用。
上面的片段是一个可工作的gulpfile,并已针对Browsersync v2.18.5和gulp v3.9.1进行了测试。这里是完整的gist

谢谢!这正是我一直在寻找的(startPathbaseDirroutes的组合对我很有帮助)。我有一个专门用于博客的仓库,并将其发布在mainDomain.com/blog上,希望在开发模式下正确设置URL结构。 - Zaheer

2

1
谢谢,我想这解决了一半的问题。剩下的一半就是让BrowserSync在与startPath相同的路径下提供应用程序服务。 - Martin Stålberg
@MartinStålberg 你最终解决了这个问题的后半部分吗? - Jon Harding
@JonHarding,很抱歉我无法解决它。 - Martin Stålberg
对于未来的读者。目前使用代理时,startPath似乎被忽略了。一个解决方法是使用require('opn')。 - Dreaded semicolon

1

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

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

只需从 一些/多层/路径 目录创建一个符号链接到 你的应用文件。然后访问 localhost:9000/一些/多层/路径 将提供与访问 localhost:9000 相同的文件。


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了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接