我想知道是否可以使用gulp-connect来提供来自不同目录的某些文件。类似的东西:
filter
但
http://localhost:8080/index.html => root: '/root/app'
答案 0 :(得分:0)
您可以将middleware function传递给gulp-connect
,以便修改请求对象,从而重写请求网址:
gulp.task('serve', function() {
connect.server({
root: 'root',
middleware: function() {
return [ function(req, res, next) {
if (!/^\/(js|css)\/.*/.test(req.url)) {
req.url = '/app' + req.url;
}
next();
}];
}
});
});
在上面的任何以/js/
或/css/
开头的路径都将保持不变。由于我们的基本文件夹为root
,因此/js/main.js
之类的路径将解析为root/js/main.js
。
所有其他路径将以/app
为前缀,这意味着/index.html
之类的路径将透明地解析为root/app/index.html
。
不像我上面那样使用自定义逻辑,你也可以使用类似http-rewrite-middleware
的东西,它允许你指定启发了nginx的重写表达式:
var rewrite = require('http-rewrite-middleware');
gulp.task('serve', function() {
connect.server({
root: 'root',
middleware: function() {
return [ rewrite.getMiddleware([
{ from: '^/js/(.*)$', to: '/js/$1' },
{ from: '^/css/(.*)$', to: '/css/$1' },
{ from: '^(.*)$', to: '/app/$1' }
])];
}
});
});