$ npm i -D @nodejs-loaders/tsx
$ node --import @nodejs-loaders/tsx main.js
See README.md
in the repository's root for more details.
Environment: test
Compatible APIs: module.register
[!TIP] If you are using only TypeScript (not tsx), consider using Node.js's builtin type stripping. This can handle it, but the builtin may provide better/more consisent results.
This loader facilitates running tests against JSX or TSX components. It looks for a esbuild.config.mjs
in the project root (the current working directory); if your config lives in a different location, create a symlink to it from your project root. Only options for esbuild's "transform" API are valid (esbuild handles looking for a tsconfig). When none is found, it uses a few necessary default.
This loader does not handle TypeScript's file extension nonsense. Import specifiers must use the actual file extension of the file actually on disk:
./
├ …
└ foo.ts
💥 import foo from './foo.js';
✅ import foo from './foo.ts';
If your project contains erroneous specifiers like above, use the correct-ts-specifiers codemod to fix your source-code.
Supported file extensions
.jsx
.mts
.ts
.tsx
-
Node's built-in support (via amaro).
@nodejs-loader/tsx
currently supports more than Amaro. - SWC register
- ts-node, it's bigger because they support old node versions. It's also based on typescript.
- tsx, it's bigger because they inlude more features such as a cli. It's also based on esbuild.