Подтвердить что ты не робот

Webpack и внешние библиотеки

Я пытаюсь использовать webpack (http://webpack.github.io/), и это выглядит очень хорошо, однако Im вроде застрял здесь.

Скажем, что Im использует CDN для библиотеки, f.ex jQuery. Затем в моем коде я хочу, чтобы require('jquery') автоматически указывал на глобальный экземпляр jquery вместо того, чтобы включать его из моих модулей.

Ive пробовал использовать плагины как IgnorePlugin:

new webpack.IgnorePlugin(new RegExp("^(jquery|react)$"))

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

Как-то мне нужно сказать webpack, что jquery следует выбрать из глобального контекста. Похоже на обычный случай использования, поэтому я очень удивился, что документы не нацелены на это конкретно.

4b9b3361

Ответ 1

В соответствии с документацией Webpack вы можете использовать свойство externals в объекте конфигурации ", чтобы указать зависимости для вашей библиотеки, которые не разрешены с помощью webpack, но становятся зависимостями вывода. Это означает, что они импортируются из среды во время выполнения [sic]."

Пример на этой странице иллюстрирует это очень хорошо, используя jQuery. В двух словах, вы можете потребовать jQuery в обычном стиле CommonJS:

var jQuery = require('jquery');

Затем в вашем объекте конфигурации используйте свойство externals для сопоставления модуля jQuery с глобальной переменной jQuery:

{
    externals: {
        // require("jquery") is external and available
        //  on the global var jQuery
        "jquery": "jQuery"
    }
}

Полученный модуль, созданный Webpack, будет просто экспортировать существующую глобальную переменную (для краткости я оставляю много вещей):

{
    1: function(...) {
        module.exports = jQuery;
    }
}

Я пробовал это, и он работает так, как описано.