0

我使用 grunt-contrib-connect 作为文件服务器。现在我想将文件请求从 /some/file/path/with/filename-dbg.js 重写为 /some/file/path/with/filename.js 仅当 /some/file/path/with/filename-dbg 时。 js不存在。

我的第一个想法是使用 grunt-connect-rewrite,但它不支持 apache modrewrite 模块中使用的 -f 或 -d 标志之类的东西。

第二个想法是在 grunt-contrib-connect 的中间件配置中添加一个功能。

任何想法如何实施?

最好的问候,康斯坦丁

4

1 回答 1

0

您可以使用grunt-connect-rewrite达到目标,只需将其作为最后一个中间件。但我建议使用https://www.npmjs.org/package/http-rewrite-middleware作为更灵活的解决方案...

即最终的解决方案可能是这样的:

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;
                }
            }
        }
    }
});
于 2014-03-28T20:54:54.847 回答