У меня есть веб-приложение, которое использует Require для загрузки зависимостей. У меня есть набор библиотек JS, которые включаются с помощью объекта Require config.shim
.
Две такие примерные библиотеки:
require.config({
shim: {
"libs/leaflet": {
exports: "L"
}
"libs/leaflet-dvf": {
deps: ["libs/leaflet"],
exports: "L"
}
}
Вторая библиотека, leaflet-dvf
, требует первой, leaflet
. Второй — это плагин к первому, который зависит от переменной глобальной области видимости L
, которую определяет первая библиотека.
Когда я обычно запускаю приложение с помощью Require, все работает нормально. Я могу включить любую библиотеку из прокладки, и все отлично работает. Нет проблем.
Проблема возникает, когда я запускаю этот код через оптимизатор Require r.js. Оптимизатор, когда он создает один оптимизированный файл JS, неправильно упорядочивает зависимости. В созданном файле код leaflet-dvf
будет стоять перед кодом leaflet
. Это вызывает ошибку времени выполнения JS, поскольку зависимый подключаемый модуль не может найти требуемую переменную глобальной области видимости L
.
Моя конфигурация сборки выглядит так:
({
baseUrl: "../js",
paths: {
"requireLib": "../js/libs/require"
},
include: ["requireLib"],
name: "Main",
out: "bin/Main-built.js",
optimize: "none",
wrapShim: true
})
Когда я запускаю оптимизатор с помощью Rhino, он создает мой выходной файл. В файле Main-built.js
код плагина будет стоять перед необходимой библиотекой. Это вызывает ошибку L undefined error
.
Как заставить оптимизатор соблюдать порядок зависимостей моих прокладок, чтобы правильно упорядочить файлы библиотеки в моем оптимизированном JS-файле?