@tsc-unalias/cli
v0.2.0
Published
Resolve TypeScript path aliases in compiled output
Maintainers
Readme
TypeScript leaves compilerOptions.paths aliases unresolved in compiled output. tsc-unalias rewrites those imports to relative paths so your code actually runs.
// Before (tsc output)
const classname = require('@utils/classname');
// After (tsc-unalias)
const classname = require('./utils/classname');Install
pnpm add -D @tsc-unalias/cliUsage
# Typical build script
tsc && tsc-unalias
# Custom tsconfig path
tsc-unalias -p packages/app/tsconfig.json
# Add .js extensions to relative imports
tsc-unalias --resolve-full-paths
# Normalize .ts extensions to .js
tsc-unalias --replace-ts-extensions
# Watch mode
tsc-unalias --watchOptions
| Flag | Description | Default |
| -------------------------------- | ---------------------------------------------------------- | ------------------------------------- |
| -p, --project <FILE> | Path to tsconfig.json | tsconfig.json |
| -w, --watch | Watch for file changes and re-process | off |
| --outDir <DIR> | Override compilerOptions.outDir | from tsconfig |
| -f, --resolve-full-paths | Add file extensions to relative imports | off |
| --resolve-full-extension <EXT> | Extension for full path resolution (.js, .mjs, .cjs) | .js |
| --replace-ts-extensions | Normalize .ts/.mts/.cts to .js/.mjs/.cjs | off |
| -v, --verbose | Verbose output | off |
| --debug | Debug output | off |
| -r, --replacer <FILES> | Paths to custom replacer modules | none |
| --input-glob <GLOB> | Override file scanning glob | {mjs,cjs,js,jsx,d.{mts,cts,ts,tsx}} |
| --output-check <EXTS> | Override extensions for path resolution | js, json, jsx, etc. |
Configuration
Configure tsc-unalias directly in your tsconfig.json:
{
"compilerOptions": {
"baseUrl": "./src",
"outDir": "dist",
"paths": {
"@utils/*": ["utils/*"],
"@config/*": ["config/*"]
}
},
"tsc-unalias": {
"resolveFullPaths": true,
"replaceTsExtensions": false,
"verbose": false,
"fileExtensions": {
"inputGlob": "{mjs,cjs,js,jsx,d.{mts,cts,ts,tsx}}",
"outputCheck": ["js", "json", "jsx", "cjs", "mjs"]
}
}
}For backwards compatibility, the "tsc-alias" key is also supported.
Migrating from tsc-alias
tsc-unalias is a drop-in replacement:
{
"scripts": {
- "build": "tsc && tsc-alias"
+ "build": "tsc && tsc-unalias"
}
}