TypeStrong / ts-node

TypeScript execution and REPL for node.js
https://typestrong.org/ts-node
MIT License
12.75k stars 529 forks source link

v11 beta #2077

Open cspotcode opened 9 months ago

cspotcode commented 9 months ago

v11 beta has been published to npm.

https://www.npmjs.com/package/ts-node/v/11.0.0-beta.1

npm install ts-node will not give you the beta by default.

You must do npm install ts-node@beta to install the beta tag.

I haven't had time to prepare release notes yet. They will accompany the v11 stable release. Until then, the commit log will have to suffice. It links to PRs which describe their changes, though their descriptions will not be as easy to read as documentation.

https://github.com/TypeStrong/ts-node/compare/v10.9.1...v11.0.0-beta.1

meyfa commented 9 months ago

I just tried the beta together with SWC and it works great, thank you!

hornta commented 9 months ago

What's new in this version?

cspotcode commented 9 months ago

I haven't had time to prepare release notes yet. They will accompany the v11 stable release. Until then, the commit log will have to suffice. It links to PRs which describe their changes, though their descriptions will not be as easy to read as documentation.

https://github.com/TypeStrong/ts-node/compare/v10.9.1...v11.0.0-beta.1

ggascoigne commented 9 months ago

I just tried the beta together with SWC and it works great, thank you!

I generally hate adding "me too" type comments, but I think that with a beta they have some value. I'd also run into issue with incompatibilities caused by changing swc behavior, simply upgrading from 10.9.1 to the new beta was seamless and worked perfectly. Thank you.

stefandoorn commented 8 months ago

Works good here with regards to #2000 as well.

bbrzoska commented 8 months ago

Works great, however when I specify moduleTypes to override files outside of the project, like this:

  "ts-node": {
    "swc": true,
    "transpileOnly": true,
    "experimentalSpecifierResolution": "node",
    "moduleTypes": {
      "../**/*": "mjs"
    }
  }

I'm getting this error:

TypeError [Error]: Cannot destructure property 'moduleType' of 'tsNodeService.moduleTypeClassifier.classifyModuleByModuleTypeOverrides(...)' as it is undefined.
    at getFormat (node_modules/ts-node/src/esm.ts:360:15)
    at async node_modules/ts-node/src/esm.ts:245:11
    at async addShortCircuitFlag (node_modules/ts-node/src/esm.ts:409:15)

The solution for me was to patch-package ts-node, and add a fallback for when classifyModuleByModuleTypeOverrides returns undefined, to return {moduleType: 'esm'} instead.

blakeembrey commented 7 months ago

@cspotcode Would it be worth doing a sweep through the repo and remove any dead code or tech debt for v11 release? Some examples that come to mind would be:

  1. Bump minimum supported node.js version
  2. Bump minimum supported TypeScript version
  3. Combine ts-node/esm and ts-node/register into a single --import allowed for node 20
  4. Review any other hard to maintain features, such as the REPL?
  5. Clean up configuration into package.json? I see some issues around extends inheritance with TypeScript.
  6. Is including SWC support too much overhead to maintain?
  7. Fix exports to only exported the expected pieces? Remove the proxying to ./dist in ts-node/transpilers.