Esiste una strategia di risoluzione del modulo dattiloscritto che mi consenta di importare sia non iniziando con una barra e le importazioni da node_modules nello stesso modulo?risoluzione modulo dattiloscritto
Con "moduleResolution" impostato su "node" il compilatore non riesce a trovare i miei moduli locali, con tutte le altre opzioni non vede i moduli nella directory node_modules che sto tentando di importare.
Ho le seguenti importazioni nel mio file:
import {Injectable} from "angular2/core";
import {Logger} from "core/logging/Logger";
"angular2/core" si trova nel node_modules, "core/logging/Logger" è il mio modulo locale.
Penso che dovrebbe essere possibile, se si guarda il codice angolare sembrano avere entrambi, vale a dire. nel modulo http.ts: 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
più di fondo informazioni:
Ho un progetto che consiste di due sottoprogetti:
- biblioteca
- app
Biblioteca definisce alcune utility che utilizza poi app. Il mio processo di compilazione crea innanzitutto il sottoprogetto "library", quindi lo copia (js compilato insieme ai file d.ts) nella sottocartella "library" in "node_modules" dell'app, quindi compila l'app.
In 'biblioteca' Ho le seguenti classi:
//file project/library/jsonparser/JSONParser.ts
class JSONParser {...}
//file project/library/services/ConfigurationService.ts
import {JSONParser} from "../jsonparser/JSONParser"
class ConfigurationService {
constructor(parser: JSONParser){ ... }
}
In 'app':
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);
}
}
Questo non compilerà il più presto JSONParser ha tutti i campi non pubblici (sono importati da due posti diversi, quindi per dattiloscritto questi sono due tipi diversi). Questo è il motivo per cui sto provando a importare i miei moduli due senza la barra all'inizio. Ma forse ci sono altre soluzioni a questo?