Ich lerne, wie man Module in TypeScript 1.8.4 mit SystemJS verwaltet und Visual Studio 2013 als IDE verwendet.So erhalten Sie Visual Studio TypeScript und SystemJS zum Auflösen absoluter Modulpfade auf die gleiche Weise
Alles funktioniert, wenn ich relative Pfade für den Import-Module verwenden:
Import { fooThing } from “../myThings/things/foo”;
SystemJS und Visual Studio sowohl den relativen Pfad zu dem gleichen Speicherort der Datei beheben, so VS richtig baut und kann Intellisense bieten auf ‚importedThing 'und SystemJS kann dieselbe Datei finden und das resultierende JavaScript funktioniert ordnungsgemäß im Browser.
Die relativen Pfade sind jedoch ... gut ... relativ. Ein Verweis auf dasselbe Modul benötigt einen anderen Pfad in .ts-Dateien, die sich in verschiedenen Ordnern befinden. Das ist kein Spaß für die Wartung.
In SystemJS kann ich absolute Modulpfade (dh Pfade, die nicht mit './' oder '../' beginnen) verwenden und eine einzige zentrale Zuordnung für die absoluten Aliase in der System.config bereitstellen():
System.config(
{
baseURL: "./myThings/",
map: {
"foo": "things/foo",
"bar": "differentThings/bar",
}
}
)
... und dann verwenden, um einen Import wie dies in jeder .ts-Datei:
Import { fooThing } from “foo”;
Wenn ich mich entscheide, die Datei zu verlagern, die thingA in definiert ist, ich muß nur die Aktualisierung map für dingA in System.config ({map}), nicht in jeder .ts Datei tha t importiert von "thingA".
Allerdings ... Visual Studio TypeScript Build weiß nichts über die System.config ({map}), so dass es nicht weiß, wo nach "foo" zu suchen ist. Die absoluten Pfade in Import führen zu einem Build-Fehler "Modul nicht gefunden". Das einzige Setup, das für die absolute Modulauflösung von VS TypeScript und SystemJS zu funktionieren scheint, besteht darin, alle .ts-Dateien in den gleichen Ordner zu stellen ... und das ist offensichtlich keine brauchbare Lösung für eine große Lösung.
(.. Ich bin mir bewusst, dass in VS Typoskript löst absolute Importpfade durch die übergeordneten Ordner Kette zu Fuß bis: https://www.typescriptlang.org/docs/handbook/module-resolution.html Dies ist jedoch nicht ähnelt, wie SystemJS absolute Pfade löst)
Also - ich bin fest mit relativen Modulpfaden oder gibt es eine Möglichkeit, die absolute Modulauflösung von VS TypeScript und SystemJS zusammenzubringen? Oder gibt es einen besseren Ansatz zum Organisieren von Modulen, die mir fehlen?