lukeed / tsm

TypeScript Module Loader
MIT License
1.18k stars 19 forks source link

Usage with `@babel/register` #17

Closed talentlessguy closed 2 years ago

talentlessguy commented 2 years ago

Hello,

I'm trying to use @babel/register with tsm like this:

$ node -r tsm -r @babel/register node_modules/uvu/bin.js tests

and I get an error like this:

TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for /home/v1rtl/Coding/x/tests/hooks/useWalletInfo.test.ts
    at new NodeError (node:internal/errors:371:5)
    at Object.file: (node:internal/modules/esm/get_format:72:15)
    at defaultGetFormat (node:internal/modules/esm/get_format:85:38)
    at defaultLoad (node:internal/modules/esm/load:13:42)
    at ESMLoader.load (node:internal/modules/esm/loader:303:26)
    at ESMLoader.moduleProvider (node:internal/modules/esm/loader:230:58)
    at new ModuleJob (node:internal/modules/esm/module_job:63:26)
    at ESMLoader.getModuleJob (node:internal/modules/esm/loader:244:11)
    at async Promise.all (index 0)
    at async ESMLoader.import (node:internal/modules/esm/loader:281:24)

This is my package.json:

{
  "name": "x",
  "private": true,
  "version": "0.0.0",
  "type": "module",
 "devDependencies": {
    "@babel/core": "^7.16.0",
    "@babel/preset-env": "^7.16.0",
    "@babel/preset-react": "^7.16.0",
    "@babel/preset-typescript": "^7.16.0",
    "@babel/register": "^7.16.0",
    "tsm": "^2.1.4",
    "typescript": "~4.4.4",
    "uvu": "^0.5.2"
  }
}
lukeed commented 2 years ago

The register hook order matters; I think tsm will have to go second.

Even then, I'm not sure you'll find what you're looking for. These are competing tools

talentlessguy commented 2 years ago

this seems to have worked:

node --loader esbuild-node-loader -r @babel/register node_modules/uvu/bin.js tests
lukeed commented 2 years ago

Cool, then you'd be able to do the same thing with tsm too then

$ node --loader tsm -r @babel/register node_modules/.bin/uvu.js ...

# same as 

$ tsm -r @babel/register node_modules/.bin/uvu.js ...