捆绑时jspm预处理(为目标环境注入设置)

时间:2015-10-03 08:31:03

标签: bundle preprocessor jspm

使用buildStatic进行捆绑时,有没有办法预处理.js文件(即注入特定于环境的设置)?

1 个答案:

答案 0 :(得分:1)

我不知道在捆绑过程中预处理js文件的方法,但是您可以针对不同的环境使用不同的文件/模块,并使用JS API将您的开发版本与生产版本交换:

gulp.task('jspm', function() {
  var builder = new jspm.Builder();

  function production(builder) {
    var systemNormalize = builder.loader.normalize;
    builder.loader.normalize = function(name, parentName, parentAddress) {
      if (name === 'ember') name = 'ember/ember.prod';
      if (name === './app-config.dev') name = './app-config.prod';

      return systemNormalize.call(this, name, parentName, parentAddress);
    };
  }

  production(builder);

  return builder.loadConfig('./config.js')
    .then(function() {
      return builder.buildStatic('app/main', 'dist/app.min.js', { sourceMaps: false, minify: false, mangle: false});
    });
});

app-config.dev.js和app-config.prod.js是您在整个应用程序中使用的模块,它们提供特定于环境的设置。在您的代码中,您应该始终导入app-config.dev。在我的博文中了解有关此工作流程的更多信息:How to Use SystemJS Hooks for Building a Production Version of Your App