Gulp + BrowserSync,服务于路径

时间:2015-05-21 10:12:35

标签: gulp browser-sync

我正在使用Gulp和BrowserSync在localhost:9000处投放我的webapp 我如何在localhost:9000/some/multi/level/path处提供webapp?

4 个答案:

答案 0 :(得分:5)

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将启动浏览器同步并打开一个页面,其中./的内容显示在网址http://localhost:3000/some/multi/level/path上。

baseDir必须设置为非空字符串,并且不需要是有效路径。虚假值(nullfalse和空字符串)无法正常工作。

上面的代码片段是一个工作gulp文件,并针对Browsersync v2.18.5和gulp v3.9.1进行了测试。这是complete gist

答案 1 :(得分:2)

在您的browsersync选项中,传递startPath以使其以'/'的其他网址开头。

这不会改变您的服务器仅服务于BrowserSync将开始的路径。

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

答案 2 :(得分:1)

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

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

只需创建从some/multi/level/path目录到your app files的符号链接。然后转到localhost:9000/some/multi/level/path将提供与转到localhost:9000

相同的文件

答案 3 :(得分:0)

+1。

对于我的测试服务器,我使用的是gulp-webserver:

Id     movie_id     available_for    price
 1         1           rent           $2.50
 2         1           purchase       $15.45

然后我从

访问该应用

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

但是当我使用Browsersync进行开发模式时,我必须使用

https://localhost:8000/myapp/view

让它变得相同真的很好,那么也许我会停止使用gulp-webserver。