使用SystemJS生成工作stream,并通过CDN托pipe外部依赖项

我试图找出一个良好的生产工作stream程,与开发工作stream程很好。 需要从构build中排除1MB的外部库,然后使用CDN分别托pipe它们。 所以我们有这个:

<script src="jspm_packages/system.js"></script> <script src="config.js"></script> <script src="build.js"></script> <script> System.import('app/main.js'); </script> 

这很好,main.js中的任何内容都被忽略,因为它已经包含在build.js中。 虽然我猜这意味着什么时候该回到开发热门的时候,我们必须先删除build.js?

所以现在我想分开生产的外部依赖关系:

 builder.buildStatic('app/main.js', 'build.js', { externals: ['jquery'], globalName: 'App', globalDeps: { 'jquery': 'jQuery' } }); 

当我们这样做时,我们需要添加一行:

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2 jquery.min.js"></script> <script src="jspm_packages/system.js"></script> <script src="config.js"></script> <script src="build.js"></script> <script> System.import('app/main.js'); </script> 

这意味着,当我们切换回开发版本时,jQuery将被双重捆绑到main.js中? 然后是SystemJS的片段:

 System.config({ bundles: { 'build/core': ['jquery'] } }); System.import('app/main.js'); 

不知道如何使用这个,因为现在我们不会使用CDN来托pipejQuery。 所以对我来说,这种感觉就像一个捕捉22. JSPM是伟大的,因为它给你的包pipe理,但要在生产中使用的包,你希望他们在外面。 所以如果我们不得不在页面中包含脚本标签,那么这不就是JSPM的目的呢?

任何想法,如何做一个不错的和容易的开发/生产工作stream程,当我们想要在两者之间切换时,我们不必更改代码? 我们想要这样的东西:

$ npm运行生产

$ npm运行开发

这样,在运行这两个之前,不需要在页面中改变任何types的HTML。 我已经在不同的SystemJS和JSPM工作stream程中寻找了几个小时,似乎找不到解决所有问题的工作。

SystemJS是否被用于任何地方的生产,还是这仍然被认为是一个实验技术? 我已经看到有一个新的HTTP / 2标准,它将dynamic加载模块,所以这意味着它切换到SystemJS或留在灰尘中?

我没有使用systemJS捆绑的东西之前,但确实映射CDN的jQuery的工作? 即你可以使用CDN的angular度和rxjs通过:

 map: { ... '@angular': 'https://npmcdn.com/@angular', 'rxjs': 'https://npmcdn.com/rxjs@5.0.0-beta.6', 'jquery': 'http://jquery.cdn' } 

像这样的事情能解决你的问题吗? 我收集这意味着你将无法使用jQuery作为一个全球性的,将需要导入它,但移动到这样的工作stream可能会有所帮助吗?