如何使用 RequireJS 构建多个模块,使用一个带有覆盖的物理配置文件
How to build several modules using RequireJS using one physical configuration file with overrides
我已经为此斗争了一段时间(甚至使用了一些基于 Ant 的解决方法),甚至发布了一个未得到解答的问题:较早的类似/相关问题。
Require.js 允许使用相同的配置文件/配置文件构建多个模块。例如:
({
appDir: 'some/path',
baseUrl: 'some/base/path',
dir: 'some/other/path',
optimize: 'none',
paths: {
...
},
modules: [
{
name: 'someModule',
},
{
name: 'someOtherModule'
}]
})
效果相当好。此外,Require.js 提供了一个选项来覆盖特定模块的构建的任何选项:Require/js 示例构建配置,如下所示:
({
appDir: 'some/path',
baseUrl: 'some/base/path',
dir: 'some/other/path',
optimize: 'none',
paths: {
...
},
modules: [
{
name: 'someModule',
},
{
name: 'someModule',
override : {
optimize: 'uglify'
}
}]
})
或者说我明白了。目的是在同一应用程序上使用相同的构建配置文件,但同时具有非缩小和缩小。这行不通。
编辑我得到的错误是(已清理,因为它是更大的 Ant 构建的一部分):
Error: ENOENT, no such file or directory 'some/other/path/someModule.js-temp'
任何帮助,建议(关于这两个问题)将不胜感激。
模块列表:config 不允许名称值重复。我怀疑这是问题的根源。它是一个数组,只是为了允许对可能被排除在其他构建层中的构建层进行适当的排序——使用对象哈希是行不通的,因为对对象的键迭代不能保证顺序。
如果你想做一个层为非缩小和缩小格式的构建,我建议通过节点脚本驱动构建,然后手动要求 uglify 并复制构建文件并在构建后缩小该副本。
下面是驱动生成的节点脚本示例:https://github.com/jrburke/r.js/blob/master/build/tests/tools/override/override.js
那个正在替换使用的 uglify 版本,但您可以使用它在传递给 requirejs.optimize() 的回调函数中进行文件复制/手动缩小。
相关文章:
- 将添加一个相同类型的事件附加或覆盖以前添加的具有相同名称的事件
- javascript函数将数据添加到屏幕,但随后被另一个函数覆盖
- 将一个iframe覆盖在另一个ifame上
- PNG图像被覆盖,但每个图像都有一个链接可以更改,每次一个-Javascript/jQuery/CSS
- 无限多维数组,其中一个值被覆盖
- 加载CSS文件并覆盖上一个文件
- 多个背景图像,一个覆盖另一个
- 如何在谷歌地图中制作一个覆盖世界的多边形
- JavaScript设计模式,一个函数正在被覆盖
- 预加载器."$.加载覆盖不是一个函数”
- 我的数组中的每个元素都被最后一个元素推入覆盖
- 用另一个 ng 点击覆盖点击(例如 ng 点击)
- 导入 serval WebComponent 时,上一个自定义元素被下一个元素覆盖
- Javascript 保存相同的 ID,而不会在 LocalStorage 中覆盖另一个 ID
- Javascript 循环和数组通过给定的最后一个值覆盖元素
- 悬停时仅显示一个覆盖
- 关闭一个覆盖Div点击
- 在Phaser框架中给予精灵一个覆盖
- 显示一个覆盖iframe的内容从动态url
- 传单:地图点击事件不工作时,点击一个覆盖的geojson层