Предварительная обработка LESS перед менее загруженным в Webpack - PullRequest
0 голосов
/ 26 марта 2019

Мне нужно иметь возможность применить некоторую предварительную обработку (замену строки) к файлам .less, которые извлекаются для компиляции, но до того, как less-loader применяет свою собственную обработку.

Сначала я подумалЯ мог бы сделать:

test: /\.less/, include: /SomeDir/, use: ['style-loader', 'css-loader', 'less-loader', {
  loader: 'string-replace-loader', options: { /* ... */ }
}]

Однако наблюдение за вводом в string-replace-loader показывает, что это просто список имен файлов, который, очевидно, не будет работать.

Я надеюсь, что смогу сделатьчто-то с raw-loader и перенаправить вывод в less-loader после предварительной обработки, но я не уверен, как сказать последнему, чтобы он принимал необработанный ввод вместо файлов.

1 Ответ

0 голосов
/ 29 марта 2019

Я думаю, что я понял это.В конце концов я перерыл исходники меньшего компилятора, чтобы увидеть, какой формат плагина он ожидает.

Приведенный ниже код подделывает полный плагин и просто предоставляет основные необходимые методы.В настоящее время он заменяет одну строку (возможно, регулярное выражение), но, конечно, может быть заменен на все, что вам нужно.

test: /\.less/, include: /SomeDir/, use: ['style-loader', 'css-loader', {
    loader: 'less-loader',
    options: {
        plugins: [
            {
                install: (lessObj, pluginManager) => {
                    pluginManager.addPreProcessor({
                        process: function (lessCode) {
                            return lessCode.replace('Replace this', 'With this');
                        }
                    }, 2000); // 2000 sets priority to come after less imports, per code comments
                }
            }
        ]
    }
}]

В идеале, это будет удалено из файла конфигурации, особенно если оно станет больше.

...