我一直在争论这个问题(甚至使用了一些基于Ant的解决方法),甚至发布了一个未回复的问题:older similar/related question。
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 example build configuration,如下所示:
({
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'
非常感谢任何帮助,建议(在这两个问题上)。
答案 0 :(得分:3)
模块列表:config不允许重复名称值。我怀疑这是问题的根源。它是一个数组,只是为了允许在其他构建层中排除的构建层的正确排序 - 使用对象哈希不起作用,因为对象的密钥迭代不保证顺序。
如果你想进行具有非缩小和缩小格式的图层的构建,我建议通过节点脚本驱动构建,然后手动要求uglify并执行构建文件的副本并在之后缩小该副本构建。
以下是驱动构建的节点脚本的示例: https://github.com/jrburke/r.js/blob/master/build/tests/tools/override/override.js
那个正在替换使用的uglify版本,但你可以使用它并在传递给requirejs.optimize()的回调函数中进行文件复制/手动缩小。