2016-01-13 9 views
6

私は両方のローカルインポートを持つことができるタイプスクリプトモジュール解決策がありますはスラッシュで始まり、同じモジュール内のnode_modulesからインポートしますか?それは私がインポートしようとしているnode_modulesディレクトリ内のモジュールを参照していない他のすべてのオプションで、私のローカルモジュールを見つけることができませんコンパイラ「ノード」に設定された「moduleResolution」とtypescriptモジュールの解像度

私は私のファイルに次のインポートを持っている:

import {Injectable} from "angular2/core"; 
import {Logger} from "core/logging/Logger"; 

"angular2 /コアは" node_modulesに位置して、 "コア/ログ/ Loggerは、" 私の地元のモジュールです。

私はあなたが角度のコードを見れば、彼らは両方、すなわちを持っているように見える、それが可能であるべきだと思います。 https://github.com/angular/angular/blob/master/modules/angular2/src/http/http.ts

import {Injectable} from 'angular2/core'; //this is local 
import {Observable} from 'rxjs/Observable'; //this probably comes from node_modules 

詳しい背景情報::http.tsモジュールに
私は2つのサブプロジェクトからなるプロジェクトがあります。
を - ライブラリ
- アプリ
ライブラリは、アプリは、その後使用するいくつかのユーティリティを定義します。私のビルドプロセスが最初のアプリ 『「、次にコンパイルし、アプリのnode_modules』で「ライブラリ」サブフォルダにコピーし、それを(d.tsファイルと一緒にコンパイルJS)は、「ライブラリ」のサブプロジェクトをビルドします。 'ライブラリ' で

私は次のクラスがあります: 'アプリ' で

//file project/library/jsonparser/JSONParser.ts 
class JSONParser {...} 

//file project/library/services/ConfigurationService.ts 
import {JSONParser} from "../jsonparser/JSONParser" 
class ConfigurationService { 
    constructor(parser: JSONParser){ ... } 
} 

を:

import {JSONParser} from "library/jsonparser/JSONParser" //this comes from node_modules in 'app' 
import {ConfigurationService} from "library/services/ConfigurationService" //from node_modules 
class AppConfigurationService extends ConfigurationService { 
    constructor(parser: JSONParser) { 
    super(parser); 
    } 
} 

これは、(彼らは、すぐJSONParserは、任意の非publicフィールドを持っているとしてコンパイルされませんこれら2つの異なる種類がありtypescriptですために)2つの異なる場所から輸入。私は2つのスタートにスラッシュせずに私のモジュールをインポートしようとしている理由です。しかし、おそらく他の解決策がありますか?

答えて

2

角度のコードを見ると、両方があるように見えます。 http://www.tsモジュールで:https://github.com/angular/angular/blob/master/modules/angular2/src/http/http.ts

Not Trivial。

それらはモジュール解像度classichttps://github.com/angular/angular/blob/6b73d09ba1d8c227d1b297341de2218aea5d1276/modules/angular2/tsconfig.json#L12

'観測rxjs /' から{観測}インポートを有します。 //これはおそらくnode_modules

ザ・から来ているがnode_modulesにこれをマッピングし、それらに固有の非自明なビルドパイプラインを持っています。参照:https://github.com/angular/angular/blob/851647334040ec95d1ab2f376f6b6bb76ead0d9a/tools/broccoli/broccoli-typescript.ts#L271

関連する問題