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

使用RequireJS配置文件作为构建文件?,requirejs,minify,web-deployment,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 }, } 我正试图让优化为部署工作。我应该有一个build.js,看起来像这样: ({ baseUrl:

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

var require = {
    baseUrl: '/javascript',
    paths: {
        'jquery': 'jquery/jquery-1.8.1.min'
        // etc. -- several paths to vendor files here
    },
}
我正试图让优化为部署工作。我应该有一个build.js,看起来像这样:

({
    baseUrl: 'javascript',
    paths: {
        'jquery': 'jquery/jquery-1.8.1.min'
    },
    name: 'main',
    out: 'main-build.js'
})
有没有办法让优化器读取我的配置文件而不是build.js?我不想在两个文件中手动保持配置的路径相同(如果它们发生更改)

我试图运行
节点r.js-o path/to/require config.js
,但它抛出了一个错误,“格式错误:SyntaxError:Unexpected token var”


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

您需要调整配置选项的定义方式。采取:

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

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

您需要使用

作为他人参考:

构建设置(无需在此处重复config.js lib):


因此,我猜在我的html中,两个脚本标记(require-config.js、require.js和data-main)将变成三个(require.js不带data-main、require-config.js和main.js)。然后我将重新构造配置文件以调用
require.config()
,而不仅仅是设置
var-config
。是吗?在你希望保持配置独立的场景中,我会说是的,就是这样。不管文档怎么说,它仍然要求我的配置文件采用JSON格式:“错误:无法使用maincigfile/opt/shootq/nimbus/public/javascript/require-config.js中的配置,因为在优化器中运行时无法正确计算该配置。请尝试仅使用同样有效的JSON配置,或者不要使用mainConfigFile,而是将所需的配置值复制到生成文件或提供给优化器的命令行参数中。“您在配置中使用了任何变量吗?-就是这样。我为缓存破坏设置了urlArgs。谢谢!
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,