@rnm/tscx
Version:
A tsc wrapper with many convenient features.
108 lines (80 loc) • 3.39 kB
Markdown
# TSCX
[](https://github.com/rnmjs/tscx/blob/main/LICENSE)
[](https://www.npmjs.com/package/@rnm/tscx)
[](https://www.npmjs.com/package/@rnm/tscx)
[](https://packagephobia.com/result?p=@rnm/tscx)
[](https://github.com/rnmjs/tscx?tab=readme-ov-file#contributing)
A `tsc` wrapper with many convenient features. Bring the [nodemon](https://www.npmjs.com/package/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 🤦♂️.
```json
{
"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 😄.
```json
{
"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](https://www.typescriptlang.org/tsconfig/#outDir) is required in `tsconfig`.
## Install
```sh
npm install typescript @rnm/tscx -D
```
## Usage
```sh
# Equivalent to `npx tsc`
$ npx tscx
# Equivalent to `npx tsc --noEmit`
$ npx tscx --noEmit
# 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](https://github.com/nodejs/corepack) using `corepack enable`.
- Install dependencies using `pnpm install`.
- Run `pnpm build` to build and `pnpm test` to test.
## License
MIT