RequireJS: всегда использовать плагин при загрузке определенного расширения

1

Есть ли способ настроить RequireJS, чтобы всегда использовать определенный плагин, когда определенное расширение было найдено?

Я хотел бы избежать ручного вызова плагина, как require('es6!myModule')

Какой-то вид конфигурации a-la WebPack - это то, что я ищу, но мне не очень повезло в документах и в Интернете

  test: /\.js$/,
  use: [{
    loader: 'babel-loader',
    options: {
      plugins: ['react-hot-loader/babel'],
    },
  }
Теги:
requirejs

1 ответ

0

RequireJS очень ограниченная поддержка, которую он обеспечивает тем, что вы пытаетесь сделать. Он не имеет каких-либо возможностей сопоставления шаблонов в общем смысле слова "сопоставление образцов". В частности, нет способа сообщить RequireJS о соответствии файлам с определенным расширением. Если вы должны придерживаться RequireJS, а набор модулей, которые должны получить плагин, является фиксированным набором, известным при создании вашего приложения, вы можете создать такую карту:

map: {
  "*": {
    foo: "plugin!foo",
    bar: "plugin!bar",
    // ...
  }
}

"*" самом деле не является глотком или каким-либо сложным сочетанием шаблонов. Это больше похоже на кодированное ключевое слово, которое означает "любой модуль".

У меня есть приложение, написанное в TypeScript, которое я должен выполнить через RequireJS и иметь возможность обрабатывать через Webpack. У меня есть несколько модулей, которые по сути являются данными JSON. Компилятор TypeScript не любит видеть имена модулей в импорте модулей. Поэтому, чтобы заставить все работать нормально, я держу имена плагинов из кода кода TypeScript, и я использую map подобную приведенной выше, чтобы RequireJS использовал json плагин для модулей, которые в ней нуждаются. Я управляю картой вручную, потому что это всего лишь несколько файлов.


SystemJS поддерживает загрузку модулей AMD и имеет гораздо более сложные средства настройки, чем RequireJS. То, что RequireJS вызывает "плагин", называется "загрузчиком" в SystemJS. Вы можете использовать опцию meta для привязки загрузчика с шаблоном файлов:

{
  baseURL: "lib/",
  paths: {
    // ...
  },
  meta: {
    "something/*.js": {
      loader: "some-loader",
    }
  }
}
  • 0
    К сожалению, это не работает для меня, и в настоящее время я спорю, могу ли я добавить это в репозиторий: github.com/requirejs/requirejs/issues/1716

Ещё вопросы

Сообщество Overcoder
Наверх
Меню