Перепишите запрос файла, только если файл не существует с grunt-contrib-connect?

Я использую 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, но он не поддерживает что-то вроде флага -f или -d, используемого в модуле apache modrewrite.

Вторая мысль заключалась в том, чтобы добавить функцию в конфигурацию промежуточного программного обеспечения grunt-contrib-connect.

Есть идеи, как это реализовать?

С наилучшими пожеланиями, Константин

1 ответ

Вы можете достичь цели, используя grunt-connect-rewrite, просто поместите ее в качестве самого последнего промежуточного программного обеспечения. Но я бы рекомендовал использовать 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;
                }
            }
        }
    }
});
Другие вопросы по тегам