synckit
Perform async work synchronously in Node.js using a separate process with first-class TypeScript support
TOC
Usage
Install
yarn add synckit
npm i synckit
API
worker_threads
is used by default for performance, if you have any problem with it, you can set env SYNCKIT_WORKER_THREADS=0
to disable it and fallback to previously child_process
solution, and please raise an issue here so that we can improve it.
import { createSyncFn } from 'synckit'
const syncFn = createSyncFn(require.resolve('./worker'))
const result = syncFn(...args)
import { runAsWorker } from 'synckit'
runAsWorker(async (...args) => {
return result
})
You must make sure:
- if
worker_threads
is enabled (by default), the result
is serialized by Structured Clone Algorithm
- if
child_process
is used, the result
is serialized by JSON.stringify
TypeScript
If you want to use ts-node
for worker file (a .ts
file), it is supported out of box!
If you want to use a custom tsconfig as project instead of default tsconfig.json
, use TS_NODE_PROJECT
env. Please view ts-node for more details.
If you want to integrate with tsconfig-paths, please view ts-node for more details.
Changelog
Detailed changes for each release are documented in CHANGELOG.md.
License
MIT © JounQin@1stG.me