tsx-fix v0.0.5
tsx
TypeScript Execute (tsx): Node.js enhanced with esbuild to run TypeScript & ESM files
Features
- Blazing fast on-demand TypeScript & ESM compilation
- Works in both CommonJS and ESM packages
- Supports next-gen TypeScript extensions (
.cts&.mts) - Supports
node:import prefixes - Hides experimental feature warnings
- TypeScript REPL
- Tested on Linux & Windows with Node.js v12~18
Install
Local installation
If you're using it in an npm project, install it as a development dependency:
npm install --save-dev tsxYou can reference it directly in the package.json#scripts object:
{
"scripts": {
"dev": "tsx ..."
}
}To use the binary, you can call it with npx while in the project directory:
npx tsx ...Global installation
If you want to use it in any arbitrary project without npx, install it globally:
npm install --global tsxYou can call tsx directly:
tsx ...Usage
Run TypeScript / ESM / CJS module
Pass in a file to run:
tsx ./file.tsWatch mode
Run file and automatically re-run on changes.
All imported files are watched except from the following directories:
node_modules, bower_components, vendor, dist, and .* (hidden directories).
Press Return to manually re-run.
tsx watch ./file.tsREPL
Start a TypeScript REPL by running with no arguments.
tsxCache
Modules transformations are cached in the system cache directory (TMPDIR). Transforms are cached by content hash so duplicate dependencies are not re-transformed.
Set the --no-cache flag to disable the cache:
tsx --no-cache ./file.tsNode.js Loader
tsx is a standalone binary designed to be used in-place of node, but sometimes you'll want to use node directly. For example, when adding TypeScript & ESM support to npm-installed binaries.
To use tsx with Node.js, pass it into the --loader flag.
Note: Node.js's experimental feature warnings will not be suppressed when used as a loader
# As a CLI flag
node --loader tsx ./file.ts
# As an environment variable
NODE_OPTIONS='--loader tsx' node ./file.tsTip: In rare circumstances, you might be limited to use the
-r, --requireflag.You can use
@esbuild-kit/cjs-loaderbut transformations will only be applied torequire().
Dependencies
@esbuild-kit/esm-loader - Node.js Loader to transform TypeScript to ESM.
@esbuild-kit/cjs-loader - Node.js
requie()hook to transform TypeScript & ESM to CommonJS.
FAQ
Does it do type-checking?
No, esbuild does not support type checking.
It's recommended to run TypeScript separately as a command (tsc --noEmit) or via IDE IntelliSense.
How is tsx different from ts-node?
They are both tools to run TypeScript files.
The main difference is that tsx is powered by esbuild for blazing fast TypeScript compilation. Whereas ts-node uses the TypeScript compiler, which is not as fast.
Because esbuild doesn't do type checking, tsx is more equivalent to ts-node --transpileOnly.
If you migrated from ts-node, please share your performance gains here!