4

我已经为此奋斗了一段时间(甚至使用了一些基于 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'

非常感谢任何帮助和建议(关于这两个问题)。

4

1 回答 1

3

模块列表:config 不允许名称值重复。我怀疑这是问题的根源。它是一个数组,只是为了允许对可能在其他构建层中排除的构建层进行适当的排序——使用对象哈希是行不通的,因为对象上的键迭代不能保证顺序。

如果您想要构建具有非缩小和缩小格式的图层,我建议通过节点脚本驱动构建,然后手动要求 uglify 并在构建后复制构建文件并缩小该副本。

以下是驱动构建的节点脚本示例: https ://github.com/jrburke/r.js/blob/master/build/tests/tools/override/override.js

那个正在替换使用的 uglify 版本,但您可以使用它并在传递给 requirejs.optimize() 的回调函数中执行文件复制/手动缩小。

于 2012-04-21T04:47:39.187 回答