Getting started
Build tscc, compile one file, then graduate to a project only after understanding the current semantic-checker boundary.
tsc completeness from familiar CLI syntax.Install
curl -fsSL https://nift-dev.github.io/tscc-website/install | sh
The installer downloads the latest official release for your platform, verifies its SHA-256 checksum against SHA256SUMS from the GitHub release, and installs tscc to ~/.local/bin by default. It never uses sudo and does not modify shell profiles. Set TSCC_INSTALL_DIR to choose another directory, or TSCC_VERSION to pin a specific release. Supported platforms are Linux x86-64, macOS arm64/x86-64 and Windows x86-64.
Build
git clone https://github.com/nift-dev/tscc.git
cd tscc
make
./tscc --version
Compile one file
tscc src/main.ts --outDir dist
By default tscc follows relative static imports and emits the discovered project graph. Use --noResolve when you intentionally want only explicitly supplied inputs.
Project mode
tscc -p tsconfig.json
{
"compilerOptions": {
"rootDir": "src",
"outDir": "dist",
"target": "es2022",
"module": "esnext"
},
"include": ["src/**/*.ts"],
"exclude": ["src/generated/**"]
}
CommonJS
tscc --module commonjs src/main.ts --outDir dist
The CommonJS path is executable and differential-tested against tsc --module commonjs, including live imported reads, re-exports and cycles. It is still treated as a growing compatibility surface, not a declaration that every TypeScript module edge case is finished.
TSX preserve
tscc --jsx preserve src/App.tsx --outDir dist
.tsx becomes .jsx: TypeScript syntax is erased while JSX remains for a later JSX-aware transform or bundler.
Where type checking fits
tscc now checks a bounded primitive family across literals, bound identifiers, arithmetic expressions, assignments and const reassignment. It still answers “can I parse/transpile this program?” far more broadly than “is this entire program type-correct?”. Keep a separate tsc --noEmit check in CI for general semantic guarantees.
{
"scripts": {
"check": "tsc --noEmit -p tsconfig.json",
"build": "tscc -p tsconfig.json"
}
}
Choose it with clear eyes
Before adopting tscc beyond an experiment, read the exact support boundary and the production-readiness assessment. Unsupported TypeScript semantics remain broader than the implemented checker slice and require the independent check above.