TSPath
TypeScript Path Alias Resolver
Everyone working in a TypeScript project that grows beyond a certains limit will eventually experience the situation commonly described as path hell, the snippet below is an example of such hell.
Path hell
import { IgniterApplication } from "../../../Application/IgniterApplication";
import { CrcCalculator } from "../../../../../../../Utilities/FileUtilities";
import { IMessageHandler } from "../../../../Messaging/IMessageHandler";
import { IMessageHub } from "../../../../Messaging/Hub/IMessageHub";
import { CronTabHelper } from "../../../../../../../Utilities/CronTabHelper";
import { GLog } from "../../../Application/GLog";By specifying path aliases in tsconfig.json you can use that alias to form an "absolute path"
{
"compilerOptions": {
...
"paths": {
"@App/*": ["./Application/*"],
"@Messaging/*": ["./Messaging/*"],
"@Utils/*": ["./Server/Tools/Utilities/*"]
}
}
}Below is the sample example but with Path Aliases instead of relative paths added, as you can see, the readability have improved significantly!
import { IgniterApplication } from "@App/IgniterApplication";
import { CrcCalculator } from "@Utils/FileUtilities";
import { IMessageHandler } from "@Messaging/IMessageHandler";
import { IMessageHub } from "@Messaging/Hub/IMessageHub";
import { CronTabHelper } from "@Utils/CronTabHelper";
import { GLog } from "@App/GLog";The TypeScript compiler will be able to resolve the paths so this will compile without problems, however the JavaScript output will not be possible to execute by Node nor a Web Browser, why? the reason is simple!
The JavaScript engine does not know anything about the compile time TypeScript configuration.
In order to run your JavaScript code, the path aliases now needs to be made into relative paths again, here is when TSPath comes into play.
So, simply run:
$ tspathYes, that´s it, really!
Say bye bye to the relative path hell!

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
