MCPcopy Index your code
hub / github.com/swc-project/swc-node

github.com/swc-project/swc-node @main sqlite

repository ↗ · DeepWiki ↗
55 symbols 157 edges 47 files 1 documented · 2%
README

swc-node

🚀 Help me to become a full-time open-source developer by sponsoring me on Github

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

Build Status Downloads License

Usage

Run TypeScript with node, without compilation or typechecking:

npm i -D @swc-node/register
node -r @swc-node/register script.ts
node --import @swc-node/register/esm-register --enable-source-maps 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

SWCRC=true node -r @swc-node/register script.ts
#!/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

Benchmark

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

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

@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

@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

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

  • pnpm i

Build and Test

  • pnpm build

  • pnpm test

Sponsors

sponsors

Extension points exported contracts — how you extend this code

Container (Interface)
(no doc)
packages/integrate/__tests__/class-property-order/class-property-order.ts
JestConfig26 (Interface)
(no doc)
packages/jest/index.ts
Options (Interface)
(no doc)
packages/core/index.ts
Unused1 (Interface)
(no doc)
packages/integrate/__tests__/sourcemaps/throw-with-interfaces.ts
JestConfig27 (Interface)
(no doc)
packages/jest/index.ts
Unused2 (Interface)
(no doc)
packages/integrate/__tests__/sourcemaps/throw-with-interfaces.ts
Unused3 (Interface)
(no doc)
packages/integrate/__tests__/sourcemaps/throw-with-interfaces.ts
Unused4 (Interface)
(no doc)
packages/integrate/__tests__/sourcemaps/throw-with-interfaces.ts

Core symbols most depended-on inside this repo

readDefaultTsConfig
called by 9
packages/register/read-default-tsconfig.ts
tsCompilerOptionsToSwcConfig
called by 8
packages/register/read-default-tsconfig.ts
transform
called by 4
packages/core/index.ts
injectInlineSourceMap
called by 3
packages/register/register.ts
transformOption
called by 3
packages/core/index.ts
getJestTransformConfig
called by 1
packages/jest/index.ts
process
called by 1
packages/jest/index.ts
toTsTarget
called by 1
packages/register/read-default-tsconfig.ts

Shape

Function 27
Interface 13
Class 10
Method 5

Languages

TypeScript100%

Modules by API surface

packages/integrate/__tests__/sourcemaps/throw-with-interfaces.ts9 symbols
packages/register/read-default-tsconfig.ts5 symbols
packages/jest/index.ts5 symbols
packages/core/index.ts5 symbols
packages/integrate/__tests__/hygiene/class.ts4 symbols
packages/integrate/__tests__/class-property-order/class-property-order.ts4 symbols
packages/register/register.ts3 symbols
packages/integrate/__tests__/super/class-super.spec.ts3 symbols
packages/integrate-module/src/compiled.js3 symbols
packages/sourcemap-support/index.ts2 symbols
packages/integrate-module/src/compiled.d.ts2 symbols
packages/integrate-module/src/cjs/index.js2 symbols

Dependencies from manifests, versioned

@babel/core7.28.3 · 1×
@babel/plugin-transform-typescript7.28.0 · 1×
@babel/preset-env7.28.3 · 1×
@babel/preset-typescript7.27.1 · 1×
@napi-rs/simple-git0.1.22 · 1×
@node-rs/xxhash1.7.6 · 1×
@swc-node/coreworkspace:* · 1×
@swc-node/jestworkspace:* · 1×
@swc-node/registerworkspace:* · 1×
@swc-node/sourcemap-support0.6.1 · 1×
@swc-node/test-conditionsworkspace:* · 1×
@swc/core1.13.3 · 1×

For agents

$ claude mcp add swc-node \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact