Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/swc-project/swc-node
Faster ts-node without typecheck
https://github.com/swc-project/swc-node
Last synced: 3 days ago
JSON representation
Faster ts-node without typecheck
- Host: GitHub
- URL: https://github.com/swc-project/swc-node
- Owner: swc-project
- License: mit
- Created: 2020-07-16T06:04:37.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-10-29T02:44:55.000Z (about 1 month ago)
- Last Synced: 2024-10-29T15:04:47.876Z (about 1 month ago)
- Language: TypeScript
- Size: 4.73 MB
- Stars: 1,795
- Watchers: 13
- Forks: 75
- Open Issues: 51
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
- my-awesome-list - swc-node - node without typecheck | swc-project | 1815 | (TypeScript)
- awesome-repositories - swc-project/swc-node - Faster ts-node without typecheck (TypeScript)
README
# `swc-node`
> 🚀 Help me to become a full-time open-source developer by [sponsoring me on Github](https://github.com/sponsors/Brooooooklyn)
**_Fast `TypeScript/JavaScript` transformer without `node-gyp` and postinstall script_**.
## Usage
Run TypeScript with node, without compilation or typechecking:
```bash
npm i -D @swc-node/register
node -r @swc-node/register script.ts
node --import @swc-node/register/esm-register script.ts # for esm project with node>=20.6
node --loader @swc-node/register/esm script.ts # for esm project with node<=20.5, deprecated
```Pass `--enable-source-maps` to node for esm projects
Set environment variable SWCRC=true when you would like to load .swcrc file
```bash
SWCRC=true node -r @swc-node/register script.ts
``````typescript
#!/usr/bin/env -S node --import @swc-node/register/esm-register// your code
```run with shebang, add `TS_NODE_PROJECT=null`(`#!/usr/bin/env TS_NODE_PROJECT=null node --import @swc-node/register/esm-register`) to use ignore tsconfig.json
## @swc-node/core
Fastest `TypeScript` transformer.
Detail: [@swc-node/core](./packages/core)
### Benchmark
> transform RxJS `AjaxObservable.ts` to ES2015 & CommonJS `JavaScript`. Benchmark code: [bench](./bench/index.ts)
**Hardware info**:
```
Model Name: MacBook Pro
Model Identifier: MacBookPro15,1
Processor Name: 6-Core Intel Core i7
Processor Speed: 2.6 GHz
Number of Processors: 1
Total Number of Cores: 6
L2 Cache (per Core): 256 KB
L3 Cache: 12 MB
Hyper-Threading Technology: Enabled
Memory: 16 GB
```#### `transformSync`
```bash
esbuild x 510 ops/sec ±1.28% (88 runs sampled)
@swc-node/core x 438 ops/sec ±1.00% (88 runs sampled)
typescript x 28.83 ops/sec ±10.20% (52 runs sampled)
babel x 24.21 ops/sec ±10.66% (46 runs sampled)
Transform rxjs/AjaxObservable.ts benchmark bench suite: Fastest is esbuild
```#### `transform` parallel
`UV_THREADPOOL_SIZE=11 yarn bench`
```bash
@swc-node/core x 1,253 ops/sec ±0.90% (75 runs sampled)
esbuild x 914 ops/sec ±1.31% (77 runs sampled)
Transform rxjs/AjaxObservable.ts parallel benchmark bench suite: Fastest is @swc-node/core
````yarn bench`
```bash
@swc-node/core x 1,123 ops/sec ±0.95% (77 runs sampled)
esbuild x 847 ops/sec ±3.74% (71 runs sampled)
Transform rxjs/AjaxObservable.ts parallel benchmark bench suite: Fastest is @swc-node/core
```## @swc-node/jest
Fastest jest `TypeScript` transformer.
Detail: [@swc-node/jest](./packages/jest)
### Performance glance
> Testing in pure `TypeScript` project, compile target is `ES2018`.
> Running with `npx jest --no-cache`, `ts-jest` was configured with `isolatedModules: true`#### ts-jest
```
Test Suites: 49 passed, 49 total
Tests: 254 passed, 254 total
Snapshots: 53 passed, 53 total
Time: 54.631 s
Ran all test suites.
✨ Done in 62.71s.
```#### @swc-node/jest
```
Test Suites: 49 passed, 49 total
Tests: 254 passed, 254 total
Snapshots: 53 passed, 53 total
Time: 10.511 s
Ran all test suites.
✨ Done in 14.34s.
```## @swc-node/register
Faster `ts-node/register/transpile-only` alternative.
Detail: [@swc-node/register](./packages/register)
## Development
### Install dependencies
- `pnpm i`
### Build and Test
- `pnpm build`
- `pnpm test`
## Sponsors