2016-08-28 8 views
0

いくつかの共有コードを使用するTypeScriptで開発された2つのWebアプリケーションがあります。例えば、apps/app1/components/app1.component.tsに私は同じimport文、すなわちSystemJsでデカップリングされたモジュールを参照する

import {ClassA} from '../../../shared/classA'; 
import {ClassB} from '../../../shared/classB'; 

ClassAClassB存在を持っているapps/app2/components/app2.component.tsにおいても同様に共有コードにimport文、例えば、

import {ClassA} from '../../../shared/classA'; 
import {ClassB} from '../../../shared/classB'; 

を持っていますそれぞれapps/shared/ClassAおよびapps/shared/ClassBである。

現在、ブラウザでこれらの共有モジュールをロードするために、私は以下のマップとパッケージ文でapps/app1/systemjs.config.jsapps/app2/systemjs.config.jsの両方を更新する必要があり、

map: { 
    'classA': 'apps/shared', 
    'classB': 'apps/shared 
}, 
packages: { 
    'classA': {main: 'classA', defaultExtension: 'js'}, 
    'classB': {main: 'classB', defaultExtension: 'js'} 
} 

私はちょうど2つのクラスを持っている場合、これは素晴らしいです(classAclassB)、apps/sharedのクラスの数が増えるにつれて、維持するのがより困難になり始める。システム全体にapps/sharedからすべてのモジュールをロードするように指示する方法はありますか?私の活字体源(上記すなわちimport文)で使用される相対的なモジュールの解像度を維持しながら

map: { 
    'shared': 'apps/shared' 
}, 
packages: { 
    'shared': {main: 'shared', defaultExtension: 'js'} 
} 

ようなもの?この問題を解決するために

答えて

0

一つの方法は、Node.jsのために使用されるもののようなスタンドアロンモジュールで共有コードを配置するようになります:

  1. ルートフォルダでは、あなたのライブラリー
  2. のルートフォルダを作成しますあなただけ

index.tsはこのような何かを見ることができますindex.ts systemjs設定マップでは、必要なすべてのクラス(example

  • を公開しますindex.tsファイルを作成します。はいあなたは、少なくとも1つの余分index.tsファイルを維持する必要があります。このpost

    で説明したように、あなたもあなたの共有クラスのこのよう入れ子構造を公開することができ、必要に応じて

    export * from './lib/ClassA'; 
    export * from './lib/ClassB'; 
    

    。しかし、一方では、クラス 'マッピング'だけをその場で行う必要があります。

    これはあなたに役立つことを願っています。

  • 関連する問題