需要动态设置的优化程序和区域设置

时间:2015-01-30 10:36:28

标签: javascript gruntjs requirejs r.js grunt-contrib-requirejs

我通过grunt使用requirejs optimizer(r.js),这是我的requirejs配置:

requirejs.config
  baseUrl: '/scripts'
  locale: window.localStorage.getItem('locale') || null
  ...

问题是每次我尝试在requirejs配置中使用变量时,grunt r.js插件(https://github.com/gruntjs/grunt-contrib-requirejs)都会抛出错误。

The main config file cannot be used because it cannot be evaluated correctly while running in the optimizer. Try only using a config that is also valid JSON, or do not use mainConfigFile and instead copy the config values needed into a build file or command line arguments given to the optimizer.

您是否设法同时将变量用作语言环境和r.js?

1 个答案:

答案 0 :(得分:1)

您的locale设置仅在运行时获取实际值。对于RequireJS'配置的部分只能在运行时给出值,我所做的是:

  1. 只需使用静态信息调用require.config(或requirejs.config)一次。配置不包含任何变量。我将r.js指向此静态信息。

  2. 在运行时,我至少有一次对require.config的额外调用,用于设置要计算的值。 RequireJS将对require.config的多个调用合并为一个配置。

  3. r.js只会使用它在文件中识别的第一个配置。因此,您可以将单个requirejs.config调用拆分为静态和动态部分,并将它们保留在同一个文件中。