使用RequireJS配置文件作为构建文件?

时间:2013-01-03 21:13:24

标签: requirejs minify web-deployment

我在require-config.js中配置了一些路径,如下所示:

var require = {
    baseUrl: '/javascript',
    paths: {
        'jquery': 'jquery/jquery-1.8.1.min'
        // etc. -- several paths to vendor files here
    },
}

我正在努力让优化工作进行部署。 docs说我应该有一个看起来像这样的build.js:

({
    baseUrl: 'javascript',
    paths: {
        'jquery': 'jquery/jquery-1.8.1.min'
    },
    name: 'main',
    out: 'main-build.js'
})

有没有办法让优化器读取我的配置文件而不是(或除了)build.js?如果它们发生变化,我不希望手动保持两个文件中配置的路径相同。

我试图只运行node r.js -o path/to/require-config.js,但它引发了错误,“格式错误:SyntaxError:Unexpected token var”

编辑:为了澄清,我的require-config.js文件只是配置,而不是我的主模块。我做了这个,所以我可以使用相同的配置,但在单元测试时加载一个不同的主模块。

2 个答案:

答案 0 :(得分:11)

您需要调整配置选项的定义方式。取from the RequireJS documentation

  

在优化程序的1.0.5+版本中,mainConfigFile选项可用于指定运行时配置的位置。如果使用主JS文件的路径指定,第一个requirejs({}),requirejs.config({}),require({})或require.config({})将在该文件中找到解析并用作传递给优化器的配置选项的一部分:

所以基本上你可以将你的r.js构建文件指向你的配置选项,这些选项也将与浏览器共享。

您需要使用the mainConfigFile option

答案 1 :(得分:1)

供其他人参考:

https://github.com/jrburke/r.js/blob/master/build/example.build.js

构建设置(这里不需要重复你的config.js lib包含):

baseUrl: 'app',
name: 'assets/js/lib/almond', // or require

// Read config and then also build it into the app
mainConfigFile: 'app/config.js',
include: ['config'],

// Needed for almond (and does no harm for require)
wrap: true,