Вы можете передать 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
, будет прозрачно разрешен до .
Вместо того, чтобы использовать пользовательскую логику, как я сделал выше, вы можете также использовать что-то вроде 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' }
])];
}
});
});
очень полезно спасибо! – Daniele