【问题标题】:Use RequireJS config file as the build file?使用 RequireJS 配置文件作为构建文件?
【发布时间】:2013-01-03 21:13:23
【问题描述】:

我在 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,但它抛出了一个错误,“malformed: SyntaxError: Unexpected token var”

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

【问题讨论】:

    标签: requirejs minify web-deployment


    【解决方案1】:

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

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

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

    你需要使用the mainConfigFile option

    【讨论】:

    • 所以我猜在我的html中,两个脚本标签(require-config.js,require.js with data-main)将变成三个(require.js with NO data-main,require-config .js 和 main.js)。然后我将重构配置文件以调用require.config() 而不仅仅是设置var config。对吗?
    • 在您希望自己保留配置的情况下,我会说是的,这就是方式。
    • 嗯。尽管文档说了什么,它仍然要求我的配置文件采用 JSON 格式:“错误:无法使用 mainConfigFile /opt/shootq/nimbus/public/javascript/require-config.js 中的配置,因为它无法正确评估,而在优化器中运行。尝试仅使用也是有效 JSON 的配置,或者不使用 mainConfigFile,而是将所需的配置值复制到构建文件或提供给优化器的命令行参数中。"
    • 您是否在配置中使用了任何变量? - github.com/jrburke/r.js/issues/270#issuecomment-8070939
    • 就是这样。我有一个用于缓存破坏的 urlArgs 设置。谢谢!
    【解决方案2】:

    供他人参考:

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

    构建设置(无需在此处重复您的 config.js 库包含):

    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,
    

    【讨论】:

      猜你喜欢
      • 2013-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-14
      相关资源
      最近更新 更多