如何在构建脚本

时间:2016-10-24 15:54:22

标签: javascript gruntjs requirejs

给出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代码中是否可以提出问题(而不是文本编辑)。

1 个答案:

答案 0 :(得分: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);