Webpack 4: Создание загрузчиков как функций (с возможностью отправки опций) - PullRequest
0 голосов
/ 26 сентября 2018

Возможно, мне не хватает чего-то очевидного, но я не могу создать загрузчик Webpack 4 как простую функцию, которая может принимать options:

rules: [{
  test: /\.csv$/,
  loader: function() {
    // ...
  },
  options: {
    // ...
  }
}]

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

Может кто-нибудь помочь нам с самым простым примером того, какзаставить что-то вроде этого работать?

PS в приведенном выше примере конфигурации функция импортирована из другого файла, просто добавила ее в строку для ясности.

1 Ответ

0 голосов
/ 26 сентября 2018

Загрузчик Webpack должен просто экспортировать функцию, которая возвращает строку кода и необязательную исходную карту.

var loaderUtils = require('loader-utils');

export default function(source) {
    const options = loaderUtils.getOptions(this) || {};
    // Get the value of options.testOption from Webpack config
    var testOption = options.testOption;

    // ...

    return `export default ${JSON.stringify(source)}`;
}

Это простой пример.loader-utils используется в большинстве загрузчиков, чтобы легко получить параметры, переданные ему из файла конфигурации Webpack.schema-utils также может быть включен для проверки параметров.

Что касается того, где поместить этот код, запишите его в файл с именем loader.js в любом каталоге, который вы хотите.Используйте его в своей конфигурации Webpack с чем-то вроде этого:

rules: [{
    test: /\.csv$/,
    use: {
        loader: path.resolve(__dirname, 'src/loader.js'),
        options: {
            testOption: 'test string'
        }
    }
}]

См. Руководство Webpack по написанию загрузчика для получения дополнительной информации.

...