requirejs模块别名/重映射

asp*_*yct 14 javascript requirejs

我目前正在将外国代码集成到我们的应用程序中.在这个过程的一部分,我必须用我们的一个替换他们的requirejs模块.

显然我无法修改他们的代码,否则我必须在每次更新时进行更改.我能做的是修改main.js(requirejs的data-main).

这是大致的,它们有什么:

requirejs.config({
    packages: [
        'beerpong'
    ]
});
Run Code Online (Sandbox Code Playgroud)

所以他们有这个beerpong包,里面有一些模块.在这些模块中,有beer.js文件.它可能需要一个require('beerpong/beer').

除此之外,我把我的文件放在一个单独的文件夹中vodkapong/beersubstitute.我想要的是,每当有人require('beerpong/beer')需要实际为他服务时,我就会这样做vodkapong/beersubstitute.

tl; dr:如何重新映射现有模块以使用我的模块?

PS:可悲的是,我们实际上并没有写一个啤酒游戏...也许有一天!

Nik*_*los 29

您可以使用地图选项.它可以为特定模块或具有该"*"名称的所有模块重新映射AMD模块.一个例子是:

require.config({
    map: {
        "*": {
            "beerpong/beer": "vodkapong/beersubstitute"
        }
    },
    ...
});
Run Code Online (Sandbox Code Playgroud)