Replace alias paths with relative paths after typescript compilation
TypeScript
1,143
317 commits
updated Sep 30, 2026
Replace alias paths with relative paths after typescript compilation. You can add aliases that reference other projects outside your tsconfig.json project by providing a relative path to the baseUrl.
+ Compile time (no runtime dependencies)
First, install tsc-alias as devDependency using npm.
npm install -g tsc-alias
npm install --save-dev tsc-alias
"scripts": {
"build": "tsc --project tsconfig.json && tsc-alias -p tsconfig.json",
}
or
"scripts": {
"build": "tsc && tsc-alias",
"build:watch": "tsc && (concurrently \"tsc -w\" \"tsc-alias -w\")"
}
To display all available options:
tsc-alias --help
If you have an issue, please create one. But, before:
--debug and check if config is correctly loaded and all sourcefiles are found.npm install tsc-alias
import { replaceTscAliasPaths } from 'tsc-alias';
replaceTscAliasPaths(options?);
Here are all the available options:
| Option | Description | Default Value |
|---|---|---|
| project, p | path to tsconfig.json | 'tsconfig.json' |
| watch | Observe file changes | false |
| outDir | Run in a folder leaving the "outDir" of the tsconfig.json (relative path to tsconfig) | tsconfig.compilerOptions.outDir |
| declarationDir | Works the same as outDir but for declarationDir | tsconfig.compilerOptions.declarationDir |
| followReferences | If true, tsc-alias will follow TypeScript project references defined in tsconfig.json and run alias replacement on all referenced projects. | false |
| resolveFullPaths | Attempt to replace incomplete import paths (those not ending in .js) with fully resolved paths (for ECMAScript Modules compatibility) | false |
| resolveFullExtension | Allows you to specify the extension of incomplete import paths, works with resolveFullPaths | '.js' | '.mjs' | '.cjs' |
| silent | Reduced terminal output. This is a deprecated option and no longer has any effect. | true |
| verbose | Additional information is output to the terminal | false |
| debug | Debug information is send to the terminal | false |
| replacers | Files to import as extra replacers More info | [] |
| output | The output object tsc-alias will send logs to. | new Output(options.verbose) |
| fileExtensions | Overwrite file extensions tsc-alias will use to scan and resolve files. | undefined |
tsconfig.json Example{
"compilerOptions": {
...
},
"tsc-alias": {
"verbose": false,
"resolveFullPaths": true,
"replacers": {
"exampleReplacer": {
"enabled": true,
"file": "./exampleReplacer.js"
},
"otherReplacer": {
"enabled": true,
"file": "./otherReplacer.js"
}
},
"fileExtensions": {
"inputGlob": "{js,jsx,mjs}",
"outputCheck": ["js", "json", "jsx", "mjs"]
}
}
}
We can use tsc-alias in a single file, with a function that returns the modified contents.
We prepare the replacer with prepareSingleFileReplaceTscAliasPaths(), passing the same options that we would pass to replaceTscAliasPaths(). That will return a promise of a function that receives the file contents and path, and returns the transformed contents, synchronously.
import { prepareSingleFileReplaceTscAliasPaths } from 'tsc-alias';
const runFile: SingleFileReplacer = await prepareSingleFileReplaceTscAliasPaths(options?);
function treatFile(filePath: string) {
const fileContents = fs.readFileSync(filePath, 'utf8');
const newContents = runFile({fileContents, filePath});
// do stuff with newContents
}
Overall
Maintained
Code review
npm
Latest release
Releases this year
1,952 followers · starred Oct 2025
219 followers · starred May 2024
578 followers · starred Sep 2023
4,035 followers · starred Feb 2026
Replace alias paths with relative paths after typescript compilation
TypeScript
1,143
317 commits
updated Sep 30, 2026
Replace alias paths with relative paths after typescript compilation. You can add aliases that reference other projects outside your tsconfig.json project by providing a relative path to the baseUrl.
+ Compile time (no runtime dependencies)
First, install tsc-alias as devDependency using npm.
npm install -g tsc-alias
npm install --save-dev tsc-alias
"scripts": {
"build": "tsc --project tsconfig.json && tsc-alias -p tsconfig.json",
}
or
"scripts": {
"build": "tsc && tsc-alias",
"build:watch": "tsc && (concurrently \"tsc -w\" \"tsc-alias -w\")"
}
To display all available options:
tsc-alias --help
If you have an issue, please create one. But, before:
--debug and check if config is correctly loaded and all sourcefiles are found.npm install tsc-alias
import { replaceTscAliasPaths } from 'tsc-alias';
replaceTscAliasPaths(options?);
Here are all the available options:
| Option | Description | Default Value |
|---|---|---|
| project, p | path to tsconfig.json | 'tsconfig.json' |
| watch | Observe file changes | false |
| outDir | Run in a folder leaving the "outDir" of the tsconfig.json (relative path to tsconfig) | tsconfig.compilerOptions.outDir |
| declarationDir | Works the same as outDir but for declarationDir | tsconfig.compilerOptions.declarationDir |
| followReferences | If true, tsc-alias will follow TypeScript project references defined in tsconfig.json and run alias replacement on all referenced projects. | false |
| resolveFullPaths | Attempt to replace incomplete import paths (those not ending in .js) with fully resolved paths (for ECMAScript Modules compatibility) | false |
| resolveFullExtension | Allows you to specify the extension of incomplete import paths, works with resolveFullPaths | '.js' | '.mjs' | '.cjs' |
| silent | Reduced terminal output. This is a deprecated option and no longer has any effect. | true |
| verbose | Additional information is output to the terminal | false |
| debug | Debug information is send to the terminal | false |
| replacers | Files to import as extra replacers More info | [] |
| output | The output object tsc-alias will send logs to. | new Output(options.verbose) |
| fileExtensions | Overwrite file extensions tsc-alias will use to scan and resolve files. | undefined |
tsconfig.json Example{
"compilerOptions": {
...
},
"tsc-alias": {
"verbose": false,
"resolveFullPaths": true,
"replacers": {
"exampleReplacer": {
"enabled": true,
"file": "./exampleReplacer.js"
},
"otherReplacer": {
"enabled": true,
"file": "./otherReplacer.js"
}
},
"fileExtensions": {
"inputGlob": "{js,jsx,mjs}",
"outputCheck": ["js", "json", "jsx", "mjs"]
}
}
}
We can use tsc-alias in a single file, with a function that returns the modified contents.
We prepare the replacer with prepareSingleFileReplaceTscAliasPaths(), passing the same options that we would pass to replaceTscAliasPaths(). That will return a promise of a function that receives the file contents and path, and returns the transformed contents, synchronously.
import { prepareSingleFileReplaceTscAliasPaths } from 'tsc-alias';
const runFile: SingleFileReplacer = await prepareSingleFileReplaceTscAliasPaths(options?);
function treatFile(filePath: string) {
const fileContents = fs.readFileSync(filePath, 'utf8');
const newContents = runFile({fileContents, filePath});
// do stuff with newContents
}
Overall
Maintained
Code review
npm
Latest release
Releases this year
1,952 followers · starred Oct 2025
219 followers · starred May 2024
578 followers · starred Sep 2023
4,035 followers · starred Feb 2026