Задать вопрос
@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)
  • Вопрос задан
  • 172 просмотра
Подписаться 2 Сложный Комментировать
Решения вопроса 1
bingo347
@bingo347
Crazy on performance...
Первое, что нужно здесь понять, то что лоадер работает в compile-time, а Ваш js код где require - в run-time.
Лоадер получает на вход исходный текст файла (или текст выданный предыдущим лоадером) и выдает свой текст на выход. Последний лоадер (в цепочке лоадеров webpack он стоит первым) должен выдавать валидный js.
Ваш лоадер конечно может сгенерировать в выходном файле функцию, но на процесс компиляции она уже повлиять особо не сможет.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы