【问题标题】:How to prepend the CDN url to requirejs paths in a build script如何在构建脚本中将 CDN url 添加到 requirejs 路径
【发布时间】:2016-10-24 15:54:22
【问题描述】:

鉴于此requirejs 配置:

require.config({
  baseUrl: './js',
  paths: {
    'jquery': 'vendor/jquery',
    'bootstrap': 'vendor/bootstrap',
    'basicModel': 'app/models/basicModel',
    'aboutModel': 'app/models/aboutModel',
    'contactModel': 'app/models/contactModel',
    'models': 'models',
    'vendor': 'vendor'
  },
  shim: {
    'bootstrap': ['jquery', 'models']
  }
});

我希望我的自动化脚本为生产准备一个包,以将paths 对象内的每个值映射如下:

'jquery': [cdnUrl + 'vendor/jquery', 'vendor/jquery'],

如您所见,cdnUrl 是一个实际变量,它将在运行时保存我的 CDN 端点。无法在构建时间确定端点,该脚本应在何时运行。

我怎样才能进行这种映射?

编辑:

我不想在这种情况下使用正则表达式,因为我真正的 require.config.js 文件更大且更复杂,因为除了 paths 之外还有更多具有相同语法的属性。

我有一个脚本,它使用requirejs-config-file npm 包解析上述配置,基本上把它变成一个真实的对象。我只是不知道我要问的内容是否可以在 javascript 代码中实现(不是文本编辑)。

【问题讨论】:

  • 你想要paths['jquery'] = [cdnUrl + paths['jquery'], paths['jquery']]这样的东西吗?
  • 是的。如何做到这一点?
  • 这个问题的题目实在是不清楚;我看不出这与变量名称和值或映射有什么关系。
  • 好吧,我想映射一些值以包含一些其他变量名。如果您有更好的建议,我可以编辑主题。

标签: javascript gruntjs requirejs


【解决方案1】:

这样的?

var config = {
      baseUrl: './js',
      paths: {
            'jquery': 'vendor/jquery',
            'bootstrap': 'vendor/bootstrap',
            'basicModel': 'app/models/basicModel',
            'aboutModel': 'app/models/aboutModel',
            'contactModel': 'app/models/contactModel',
            'models': 'models',
            'vendor': 'vendor'
      },
      shim: {
            'bootstrap': ['jquery', 'models']
      }
};

for(var path in config.paths){
    var pathValue = config.paths[path];
    config.paths[path] = [cdnUrl + pathValue, pathValue];
}
console.log(config.paths);

【讨论】:

  • 这不起作用,因为cdnUrl 将被评估。我只知道它在运行时的价值,而不是构建时间。
  • 可能是对值的 http 调用,或者可能从其他来源读取它?也许一个函数可以在 cdnUrl 准备好时更新值
  • 如果我可以让最终值完全像这样:'jquery': [cdnUrl + 'vendor/jquery', 'vendor/jquery'], - 那会起作用。但当我考虑更多时,它看起来是不可能的。
猜你喜欢
  • 2013-12-02
  • 2020-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-13
  • 1970-01-01
  • 1970-01-01
  • 2013-04-25
相关资源
最近更新 更多