我正在使用 Gulp 和 BrowserSync 在localhost:9000
.
我怎样才能为 webapp 提供服务localhost:9000/some/multi/level/path
呢?
4 回答
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
必须设置为非空字符串,并且不需要是有效路径。虚假值(null
和false
空字符串)将不起作用。
上面的代码片段是一个有效的 gulpfile,并针对 Browsersync v2.18.5 和 gulp v3.9.1 进行了测试。这是完整的要点。
在您的浏览器同步选项中传入startPath
以使其从 '/' 的不同 URL 开始。
这不会改变您的服务器只为 BrowserSync 开始的路径提供服务。
似乎该选项不可用。
startPath
只会更改 browsersync 打开的 URL。
我终于想出了一个简单的解决方案:
只需创建一个从some/multi/level/path
目录到your app files
. 然后 go tolocalhost:9000/some/multi/level/path
将提供与 go to 相同的文件localhost:9000
对此+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。