Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bustle/ts-eager
Fast TypeScript runner using esbuild for eager compilation
https://github.com/bustle/ts-eager
Last synced: 1 day ago
JSON representation
Fast TypeScript runner using esbuild for eager compilation
- Host: GitHub
- URL: https://github.com/bustle/ts-eager
- Owner: bustle
- License: mit
- Created: 2020-10-13T13:06:08.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2022-03-03T00:02:12.000Z (over 2 years ago)
- Last Synced: 2024-10-30T17:48:18.294Z (12 days ago)
- Language: JavaScript
- Homepage:
- Size: 135 KB
- Stars: 216
- Watchers: 5
- Forks: 10
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ts-eager
Fast TypeScript runner and register hook with eager compilation.
Similar to [`ts-node`](https://github.com/TypeStrong/ts-node), except it uses [`esbuild`](https://github.com/evanw/esbuild) – an extremely fast TypeScript transpiler – to eagerly compile all included files from your `tsconfig.json` on startup. This makes a noticeable difference for tasks where you're likely to load a good portion of your TS files, eg running tests.
It falls back to lazy compilation if a file is require'd that's not in `tsconfig.json`, and will also fallback to `ts-node` (if it's installed) for any type-specific compilation that `esbuild` doesn't support (such as `emitDecoratorMetadata`). It will also optionally require `tsconfig-paths` for `paths` support if your `tsconfig` needs it.
## Installation
```console
npm install -D ts-eager# Optional, but recommended: for determining files from tsconfig.json
npm install -D typescript# Optional, if you need emitDecoratorMetadata support
npm install -D ts-node# Optional, if you need paths support
npm install -D tsconfig-paths
```## Usage
```console
ts-eager myfile.ts
```Or as a require hook:
```console
node -r ts-eager/register myfile.ts
```## Configuration
`ts-eager` doesn't have any specific command-line options – it invokes `node` and passes all command-line arguments through.
It supports these environment variables:
- `TS_EAGER_LOGLEVEL`: 'error' (default), 'warning', 'info', 'silent'
- `TS_NODE_PROJECT`: tsconfig file (default tsconfig.json)
- `TS_NODE_IGNORE`: comma separated regexes to skip compilation completely## Examples
If you want to customize which files `ts-eager` compiles up-front, you can specify a different `tsconfig.json` using `TS_NODE_PROJECT`, and then use the standard TypeScript `include`/`exclude` options in your config.
For example, if this was in `tsconfig.test.json`:
```json
{
"extends": "./tsconfig.json",
"include": ["test"],
"exclude": ["**/*.template.ts"]
}
```Then you could run `mocha` like this:
```console
TS_NODE_PROJECT=tsconfig.test.json mocha -r ts-eager/register
```And it would only eagerly compile files in `test`, and exclude any matching `*.template.ts`.
`mocha` also supports adding require hooks in `.mocharc.json`:
```json
{
"recursive": true,
"require": ["ts-eager/register"],
"timeout": 5000
}
```