natemoo-re / swc-node

Faster ts-node without typecheck

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

swc-node

Fast TypeScript/JavaScript transformer without node-gyp and postinstall script.

Build Status Downloads License

Support matrix

node 10 node12 node14
Windows x64
macOS
Linux x64

@swc-node/core

Fastest TypeScript transformer.

Detail: @swc-node/core

Benchmark

⚠️ Notes: transformSync API in esbuild has huge overhead. So swc is only faster than esbuild in transformSync API. In the transform API, esbuild is about 1 ~ 1.6x faster than swc.

transform RxJS AjaxObservable.ts to ES2015 & CommonJS JavaScript. Benchmark code: bench

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

@swc-node/core x 368 ops/sec ±4.18% (84 runs sampled)
esbuild x 42.16 ops/sec ±1.76% (55 runs sampled)
typescript x 24.52 ops/sec ±14.38% (51 runs sampled)
babel x 22.08 ops/sec ±10.17% (44 runs sampled)
Transform rxjs/AjaxObservable.ts benchmark bench suite: Fastest is @swc-node/core

transform single thread

@swc-node/core x 291 ops/sec ±1.66% (78 runs sampled)
esbuild x 454 ops/sec ±3.66% (73 runs sampled)
Transform rxjs/AjaxObservable.ts async benchmark bench suite: Fastest is esbuild

transform parallel

@swc-node/core x 946 ops/sec ±2.36% (74 runs sampled)
esbuild x 931 ops/sec ±3.56% (65 runs sampled)
Transform rxjs/AjaxObservable.ts parallel benchmark bench suite: Fastest is @swc-node/core,esbuild

@swc-node/jest

Fastest jest TypeScript transformer.

Detail: @swc-node/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

Development

Install dependencies

  • yarn@1.x latest
  • rust@nightly latest

Build and test

  • yarn
  • cargo build --release && yarn build
  • yarn test

About

Faster ts-node without typecheck

License:MIT License


Languages

Language:TypeScript 99.3%Language:JavaScript 0.7%