2016-10-11 4 views
-1

私はangle 2アプリの静的なバンドルを生成しようとしています(私の目標は、systemjなしのscriptタグを使ってインポートする単一の縮小jsファイルです)。これは私のTSconfigあるgrupを使ってsystemjs-builderを正しく設定できません

MyProject/ 
    app/ 
     monitoring/ 
      a.ts 
      b.ts 
     terminals/ 
      a.ts 
      b.ts 
     main.ts 
     app.module.ts 
... 

{ 
    "compilerOptions": { 
    "target": "es5", 
    "module": "commonjs", 
    "moduleResolution": "node", 
    "sourceMap": true, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "removeComments": true, 
    "noImplicitAny": false, 
    "outDir": "__dist__" 
    }, 
    "filesGlob": [ 
    "**/*.ts", 
    "**/*.tsx", 
    "!node_modules/**" 
    ] 
} 

この1 systemjs設定:

(function() { 

    var DEFAULT_PACKAGE_CONFIG = { 
     main: './index.js', 
     defaultExtension: 'js' 
    }; 

    System.config({ 
     paths: { 
      'npm:': 'node_modules/' 
     }, 
     map: { 
      app: '__dist__', 
      monitoring: '__dist__/monitoring', 
      terminals: '__dist__/terminals', 
      statistics: '__dist__/statistics', 
      references: '__dist__/references', 

      '@angular/core': 'npm:@angular/core/bundles/core.umd.js', 
      '@angular/common': 'npm:@angular/common/bundles/common.umd.js', 
      '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js', 
      '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js', 
      '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js', 
      '@angular/http': 'npm:@angular/http/bundles/http.umd.js', 
      '@angular/router': 'npm:@angular/router/bundles/router.umd.js', 
      '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js', 

      'rxjs': 'npm:rxjs', 
      'primeng': 'npm:primeng', 
      'wijmo': 'scripts/vendor', 
      'angular2-in-memory-web-api': 'npm:angular2-in-memory-web-api' 
     }, 
     packages: { 
      app: { 
       main: './main.js', 
       defaultExtension: 'js' 
      }, 
      rxjs: { 
       defaultExtension: 'js' 
      }, 
      primeng: { 
       defaultExtension: 'js' 
      }, 
      wijmo: { 
       defaultExtension: 'js' 
      }, 
      monitoring: DEFAULT_PACKAGE_CONFIG, 
      terminals: DEFAULT_PACKAGE_CONFIG, 
      statistics: DEFAULT_PACKAGE_CONFIG, 
      references: DEFAULT_PACKAGE_CONFIG, 
      'angular2-in-memory-web-api': { 
       main: './index.js', 
       defaultExtension: 'js' 
      } 
     } 
    }); 

})(); 

...そして最後に私の一気タスクマイアプリは(簡体字)、以下の構造を有しています:

gulp.task('bundle:js', function() { 
    var builder = new SystemJsBuilder('.', './systemjs.config.js'); 
    return builder 
     .buildStatic('__dist__/app/main.js', buildFolder + '/bundle.js'); 
}); 

...しかしwh私はそれを実行すると、私は得る:

> Error on fetch for __dist__/app/monitoring.js at 
> file:///MyProject/__dist__/app/monitoring.js Loading 
> __dist__/app/app.module.js Loading __dist__/app/main.js ENOENT: no such file or directory, open '/MyProject/__dist__/app/monitoring.js' 

...それは "アプリ"の下のサブフォルダを無視しているようだ...なぜですか?このエラーを修正するにはどうすればよいですか?

+0

解決方法はありましたか? –

答えて

0

実際には、appというディレクトリを無視するのではなく、構成に問題があるように見えます。

あなたが持っている:

System.config({ 
    packages: { 
     monitoring: { 
      main: './index.js', 
      defaultExtension: 'js' 
     } 
    ... 

は、だから私はあなたのコードのどこかで推測自動的ため defaultExtensionmonitoring.jsに翻訳され monitoringをインポートして、このファイルが存在しないため、したがって、それはエラーをスローします。

+0

"monitoring"パッケージの設定は、開発中にsystemjsに必要です(それはうまくいきます)。そうでなければ、私はgulpコンパイル中に直面しているようにmonitoring.jsをロードしようとします...ソースコードのインポートはこのようです: './monitoring 'から' import {DashboardComponent、AvailabilityComponent、AlertsComponent} ;; ...本当に何が間違っていて、どのように修正するのか分かりません: – daveoncode

+0

あなたは同じSystemJS設定を使う必要はありませんブラウザで依存関係をロードすることができると確信できる場合、コンパイルできない場合は、特定のリソースに対して 'build:false'オプションを使用できます。https://github.com/を参照してください。 systemjs/builder#ignore-resources – martin

+0

実際には、複数のインポートが問題になっているようです...エラーなしでコンパイルされたパッケージの各コンポーネントに対して単一のインポートを定義した場合 – daveoncode

関連する問題