2016-11-29 7 views
0

Работа с набором сценариев, которые будут запускаться в контексте браузера, где определенные модули (например, подчеркивание) будут доступны в виде глобальных модулей. Тем не менее, я в зависимости от модулей в node_modules что require/import подчеркнуть напрямую. Можно ли настроить WebPack для зависимости от экземпляра глобального подчеркивания при компиляции этих файлов вместо дублирования этой библиотеки в моих скомпилированных сценариях?WebPack 2: замененный модуль require'd с глобальным

ответ

2

Что вы ищете в Externals:

конфигурация

externals в WebPack обеспечивает способ не включая зависимость в пачке. Вместо этого созданный пакет полагается на эту зависимость, чтобы присутствовать в потребительской среде. Обычно это относится к разработчикам библиотек, хотя разработчики приложений также могут хорошо использовать эту функцию.

Это работает даже для модулей в node_modules как WebPack ходит все дерево зависимостей в , чтобы выяснить, что включать в результирующей пачке.

Там даже example это специально для вашего случая использования, это выглядит следующим образом:

externals : { 
    lodash : { 
    commonjs: "lodash", 
    amd: "lodash", 
    root: "_" // indicates global variable 
    } 
} 

Этот синтаксис используется для описания всех возможных способов, что внешняя библиотека может быть доступна. lodash здесь доступен как lodash в системах AMD и CommonJS, но доступен как _ в глобальной переменной форме.

0

Если вы хотите полагаться на библиотеку, которая уже доступна в среде при загрузке вашего пакета, вам необходимо использовать externals.

module.exports = { 
    externals: { 
     underscore: "_" 
    } 
} 

Ключ объекта (underscore) является то, что вы используете, чтобы импортировать его, а значение (_) является глобальной переменной она будет искать.

require("underscore"); // Will return the _ variable from the global environment! 

 Смежные вопросы

  • Нет связанных вопросов^_^