代码之家  ›  专栏  ›  技术社区  ›  gka

systemjs builder-为angular2绑定rxjs

  •  1
  • gka  · 技术社区  · 9 年前

    我有一个Angular2应用程序,在开发环境中运行良好。 所有Angular2依赖项在运行时从node_modules dir加载。

    我使用GulpTypeScript插件绑定应用程序代码,使用system js绑定第三方库代码。

    这是绑定lib文件的gulp任务:

    function bundleLibs() {
      var files = [
        'node_modules/rxjs/bundles/Rx.js',
        'node_modules/@angular/core/bundles/core.umd.js',
        'node_modules/@angular/forms/bundles/forms.umd.js',
        'node_modules/@angular/common/bundles/common.umd.js',
        'node_modules/@angular/compiler/bundles/compiler.umd.js',
        'node_modules/@angular/platform-browser/bundles/platform-browser.umd.js',
        'node_modules/@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
        'node_modules/@angular/upgrade/bundles/upgrade-static.umd.js'
      ];
    
      var builder = new SystemJSBuilder('dist', {
        map: {
          'rxjs': 'node_modules/rxjs'
        }
      });
    
      return builder.bundle(files, 'dist/js/lib.js');
    }
    

    我希望所有rxjs库都包含在输出文件中。 但当我运行应用程序时,我得到404状态

    node_modules/rxjs/Subject.js
    node_modules/rxjs/Observable.js
    

    (以及所有其他rxjs文件)。

    它有助于捆绑每个单独的rxjs文件:

    var files = [
    'node_modules/@angular/core/bundles/core.umd.js',
    'node_modules/rxjs/Subject.js',
    'node_modules/rxjs/Observable.js',
    ...
    ];
    

    但我认为这不是一个好的解决方案。

    因此,问题是,如何从rxjs库中捆绑所有需要的文件? (角度2所需)

    1 回复  |  直到 9 年前
        1
  •  1
  •   gka    9 年前

    我以以下解决方案结束。

    var builder = new SystemJSBuilder('./', {
          map: {
            'rxjs': 'node_modules/rxjs'
          },
          packages: {
            "rxjs": {main: "Rx.js", defaultExtension: "js"}
          }
        });
        return builder.bundle('rxjs', '.tmp/rxjs.js');
    

    因此,我为angular2和rxjs创建了单独的捆绑包,然后将它们合并到一个库中。

    推荐文章