2016-09-16 6 views
0

gulp-connectを使って、別のディレクトリのいくつかのファイルを処理できるかどうか疑問です。ような何か:任意の上記で'root'とは異なるディレクトリからいくつかの資産を提供するGulp接続

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(); 
     }]; 
    } 
    }); 
}); 

http://localhost:8080/index.html => root: '/root/app' 

しかし

http://localhost:8008/js/main.js => from '/root/js/' not from 'root/app/js' 
http://localhost:8008/css/main.css => from '/root/css/' not from 'root/app/css/' 

答えて

0

あなたはリクエストオブジェクトを変更するため、リクエストURLを書き換えることができますmiddleware functiongulp-connectにその渡すことができます/js/または/css/で始まるパスは変更されずにそのまま渡されます。私たちのベースフォルダはrootなので、/js/main.jsのようなパスはroot/js/main.jsに解決されます。

他のすべてのパスには/appが追加されます。つまり、/index.htmlのようなパスはに透過的に解決されます。

代わりのカスタムロジックを使用して、私が上記したよう、また、あなたはnginxのほうふつリライト式を指定することができますhttp-rewrite-middlewareのようなもの、使用することができます。非常に参考に

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' } 
     ])]; 
    } 
    }); 
}); 
+0

をありがとう! – Daniele

関連する問題