@Undefinedy

Как написать простейший webpack loader?

Здравствуйте, пытаясь разобраться с устройством лоадеров, мне интересно как происходит передача параметров для лоадера?
К примеру простой лоадер https://github.com/mortenson/emit-file-loader#readme
код которого
const loaderUtils = require('loader-utils');
module.exports = function loader(content, map, meta) {
  const options = loaderUtils.getOptions(this);
  if (options.output) {
    const name = loaderUtils.interpolateName(this, options.output, options);
    this.emitFile(name, content);
  }
  this.callback(null, content, map, meta);
};

Использовать его можно
require(`emit-file-loader?{output:"somefile.css"}!../src/someFileExample.txt`)

Где я передаю параметры лоадеру output:"somefile.css" и он получает аргумент от выполнения ../src/someFileExample.txt
Как передать аргумент и параметры используя функцию внутри js, к примеру
require("emit-file-loader")({output:"somefile.css})("someTextToFileHere");

То есть мне нужно подать значение в loaderUtils.getOptions(this)
  • Вопрос задан
  • 106 просмотров
Решения вопроса 1
bingo347
@bingo347
Crazy on performance...
Первое, что нужно здесь понять, то что лоадер работает в compile-time, а Ваш js код где require - в run-time.
Лоадер получает на вход исходный текст файла (или текст выданный предыдущим лоадером) и выдает свой текст на выход. Последний лоадер (в цепочке лоадеров webpack он стоит первым) должен выдавать валидный js.
Ваш лоадер конечно может сгенерировать в выходном файле функцию, но на процесс компиляции она уже повлиять особо не сможет.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы