2014-02-28 46 views
0

我正在使用grunt-contrib-connect作爲文件服務器。 現在,我只想在/ some/file/path/with/filename-dbg時將/some/file/path/with/filename-dbg.js文件請求重寫爲/some/file/path/with/filename.js .js不存在。僅當grunt-contrib-connect文件不存在時才重寫文件請求?

我的第一個想法是使用grunt-connect-rewrite,但它不支持像apache modrewrite模塊中使用的-f或-d標誌。

第二個想法是爲grunt-contrib-connect的中間件配置添加一個函數。

任何想法如何實現?

最好的問候,康斯坦丁

回答

0

可以達到使用目標咕嚕-連接重寫,只是把它作爲一個最後的中間件。但我建議你使用https://www.npmjs.org/package/http-rewrite-middleware istead更靈活的解決方案......

即最終的解決方案可能是這樣的:

var rewriteModule = require('http-rewrite-middleware'); 

//... 

grunt.initConfig({ 
    connect: { 
     options: { 
      port: 9000, 
      hostname: 'localhost' 
     }, 
     development: { 
      options: { 
       middleware: function (connect, options) { 
        var middlewares = []; 

        if (!Array.isArray(options.base)) { 
         options.base = [options.base]; 
        } 

        var directory = options.directory || options.base[options.base.length - 1]; 
        options.base.forEach(function (base) { 
         // Serve static files. 
         middlewares.push(connect.static(base)); 
        }); 

        // Make directory browse-able. 
        middlewares.push(connect.directory(directory)); 

        // ... everything else here 

        // RewriteRules support 
        middlewares.push(rewriteModule.getMiddleware([ 
         {from: '^(.*)-dbg.js', to: '$1.js'} 
        ])); 

        return middlewares; 
       } 
      } 
     } 
    } 
}); 
相關問題