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-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 に答える