In vielen größeren TypeScript Projekten sieht man häufig lange import
Anweisungen. ?
import { forIn } from "../../../../../utils/array";
Dabei treten folgende drei Probleme auf:
- Je tiefer die Struktur desto unübersichtlicher werden die Imports ?️♂️
- Der Code wird schwerer zu refaktorieren ?
- Wenn Code als externe npm Module ausgelagert werden soll, muss der gesamte Code angepasst werden ?
Wäre es nicht einfacher wenn man folgendes schreiben kann?
import { forIn } from "@orlyapps/utils/array";
Und genau das kann man in TypeScript ❤️ machen. Mit dem Path Mapping Featurelassen sich beliebige Modul Pfade erstellen, welche auf das Dateisystem gemapped werden können.
Angular
In einem Angular Projekt (zum Beispiel erstellt mit der angular-cli
) können die Pfade in der tsconfig.json
hinterlegt werden
{ "compilerOptions": { ... "baseUrl": "./src", "paths": { "@orlyapps/utils/*": ["app/utils/*"], "@orlyapps/pipes/*": ["app/pipes/*"] } ... }}
Zuerst wird eine basePath
gesetzt. Alle Pfade in paths
sind relativ zum basePath
.
Als zweites können die gewünschten Pfade und das Mapping auf das Dateisystem unter paths
hinterlegt werden. So weiß der TypeScript Compiler wo er @orlyapps/utils/array
findet. Und zwar hier ./src/app/util/array.ts
Webpack
Für eine einfache Webpack Konfiguration muss das awesome-typescript-loader Plugin installiert werden und in der webpack
Config Datei registriert werden.
const { TsConfigPathsPlugin } = require('awesome-typescript-loader');...resolve: { plugins: [ new TsConfigPathsPlugin() ]}...
Zack - Fertig!
Utilities, Componenten oder Directive können so später in private npm Module ausgelagert werden, ohne das der bestehende Code angepasst werden muss.
Praktisch und ein guter Tipp auch für Ionic Projekte und Hybride App Entwicklung! ?
Mehr Informationen zu Mobile App Entwicklung
Einheitliche Codebasis und plattformübergreifende Entwicklung, das gehört für Orlyapps einfach zusammen. Denn genau das macht Ihre App flexibel und pflegeleicht, egal für welches Endgerät. Oder gleich mehrere.