Skip to content
/ tscx Public

A tiny tsc wrapper with many convenient options.

License

Notifications You must be signed in to change notification settings

rnmjs/tscx

Repository files navigation

TSCX

PRs Welcome

A tsc wrapper with many convenient features. Bring the nodemon + JavaScript development experience to TypeScript.

Why

Developing a backend application using TypeScript needs some other third-party library. It's tedious and hard to config 🤦‍♂️.

{
  "scripts": {
    "clean": "rimraf dist",
    "compile": "tsc -p tsconfig.build.json",
    "copy-files": "copyfiles -u 1 src/**/*.njk dist",
    "build": "npm run clean && npm run compile && npm run copy-files",
    "dev": "NODE_ENV=local nodemon -w src -e ts --exec 'npm run build && node bootstrap.js'"
  },
  "devDependencies": {
    "copyfiles": "2.4.1",
    "nodemon": "3.1.0",
    "rimraf": "5.0.5",
    "typescript": "5.6.3"
  }
}

Now you can simplify your package.json by using this library 😄.

{
  "scripts": {
    "dev": "NODE_ENV=local tscx -rwc -p tsconfig.build.json -e bootstrap.js"
  },
  "devDependencies": {
    "@rnm/tscx": "*",
    "typescript": "5.6.3"
  }
}

Highlight

  • Same usages as tsc.
  • Respect tsconfig.json.
  • ESM.

Differences with tsc

  • ✅ Additionally support --remove for removing output folder before every compilation.
  • ✅ Additionally support --copyfiles for copying non-ts files to output folder after every compilation.
  • ✅ Additionally support --script <scr> for running npm run <scr> after compilation success.
  • ✅ Additionally support --exec <path> for executing js file after compilation success.
  • 🚨 outDir is required in tsconfig.
  • ⚠️ As for tsc built-in options, we only support these options below.
    • --project
    • --watch
    • --noCheck

Install

npm install typescript @rnm/tscx -D

Usage

# Equivalent to `npx tsc`
$ npx tscx

# Equivalent to `npx tsc --project tsconfig.build.json --watch`
$ npx tscx --project tsconfig.build.json --watch

# Remove output folder before compilation and then compile ts code.
$ npx tscx --remove

# Compile ts code and then copy non-ts files to output folder after compilation.
$ npx tscx --copyfiles

# Execute `npm run my-script` after compilation success.
$ npx tscx --script my-script

# Compile ts code and execute bootstrap.js after successful compilation.
$ npx tscx --exec bootstrap.js

# Compile ts code in watch mode and execute bootstrap.js after every successful compilation.
$ npx tscx --project tsconfig.build.json --watch --exec bootstrap.js

# Remove => Compile => Copy => npm run => Bootstrap => Edit any file to repeat it
$ npx tscx --project tsconfig.build.json --remove --copyfiles --watch --script my-script --exec bootstrap.js

Contributing

  • Clone this repository.
  • Enable Corepack using corepack enable.
  • Install dependencies using pnpm install.
  • Run pnpm build to build and pnpm test to test.

License

MIT