Requirejs alias/remap
В настоящее время я интегрирую внешний код в наше приложение.
Часть процесса, я должен заменить один из их модулей requirejs нашими.
Очевидно, я не могу изменить свой код, иначе мне пришлось бы делать изменения при каждом обновлении. Что я могу сделать, так это изменить main.js(main файл requirejs).
Вот примерно, что у них есть:
requirejs.config({
packages: [
'beerpong'
]
});
Итак, у них есть пакет beerpong
, с некоторыми модулями. Среди этих модулей есть файл beer.js
. Это может потребоваться с помощью require('beerpong/beer')
.
Кроме того, у меня есть файлы в отдельной папке, скажем vodkapong/beersubstitute
. Я бы хотел, чтобы всякий раз, когда кто-то require('beerpong/beer')
, этот requirejs на самом деле служит ему вместо моего vodkapong/beersubstitute
.
tl; dr: как я могу переназначить существующий модуль для использования моего модуля?
PS: К сожалению, мы на самом деле не пишем игру в пивной бар... Возможно, однажды...
Ответы
Ответ 1
Вы можете использовать параметр карты . Он может переназначить модуль AMD для определенного модуля или для всех модулей с именем "*"
. Примером может служить:
require.config({
map: {
"*": {
"beerpong/beer": "vodkapong/beersubstitute"
}
},
...
});
Ответ 2
Вы можете сделать что-то вроде этого -
require.config({
paths: {
jquery_ui_scrollbar: 'libs/jquery/jquery.custom-scrollbar'
}
});
require(['dependency1', 'dependency2'], function (dep1, dep2) {
// code goes here
});
И в своем вызове define вы можете сделать это -
define(['jquery_ui_scrollbar'], function(scrollbar) {});