Импорт Less из файла JavaScript в файл Less

#javascript #node.js #webpack #less #less-loader

#javascript #node.js #webpack #Меньше #less-загрузчик

Вопрос:

Я пытаюсь импортировать less, созданный с помощью другого загрузчика из файла JavaScript.

На основе less-loader s README.md это должно быть возможно:

Используя распознаватель webpack, вы можете импортировать файлы любого типа. Вам просто нужен загрузчик, который экспортирует допустимый меньший код. Часто также требуется установить условие эмитента, чтобы гарантировать, что это правило применяется только к импорту, исходящему из файлов Less.

Но, видимо, это не работает. Файл less всегда заканчивается исходным кодом JavaScript, независимо от того, какие загрузчики я использую. Я также пробовал это с рекомендуемым issuer условием и без него, но безрезультатно. Пользовательский загрузчик, который я написал, чтобы проверить, работает ли он, также не вызывается.


Я использую webpack@5.1.0 with less-loader@7.0.2 .

 // ./webpack.config.js
{
    entry: './index.js',
    mode: 'development',
    module: {
        rules: [
            {
                test: /.less$/,
                use: [
                    'style-loader',
                    'css-loader',
                    'less-loader'
                ]
            },
            {
                test: /.less.js$/,
                issuer: /.less$/, // <------
                use: [
                    {
                        loader: require.resolve('./test-loader.js')
                    }
                ]
            }
        ]
    }
}
  
 // ./main.less
@import './import.less.js';

body { background: green; }
  
 // ./index.js
import './main.less';
  
 // ./import.less.js
module.exports = 'body { color: red; }';
  
 // ./test-loader.js
module.exports = (source) => {
  console.log('It should call this loader', source);
  // parse content
  return source;
}
  

Ошибка:

 ERROR in ./main.less (./node_modules/css-loader/dist/cjs.js!./node_modules/less-loader/dist/cjs.js!./main.less)
Module build failed (from ./node_modules/less-loader/dist/cjs.js):


module.exports = 'body { color: red; }'
             ^
Unrecognised input
      Error in C:UsersUSERProjectsless-issuer-testimport.less.js (line 1, column 15)
 @ ./main.less 2:12-125 9:17-24 13:15-29
 @ ./index.js 1:0-21