Nnodejs

nodejs/@nodejs/correct-ts-specifiers

No description available

esmimportnodetypescript
Public
24 executions

Run locally

npx codemod @nodejs/correct-ts-specifiers

Correct TypeScript Specifiers

This package transforms import specifiers from the old tsc (TypeScript's compiler) requirement of using .js file extensions in source-code to import files that are actually typescript; the corrected specifiers enable source-code to be runnable by standards-compliant software like Node.js.

This is a one-and-done process, and the updated source-code should be committed to your version control (eg git); thereafter, source-code import statements should be authored compliant with the ECMAScript (JavaScript) standard.

This package does not just blindly find & replace file extensions within specifiers: It confirms that the replacement specifier actually exists; in ambiguous cases (such as two files with the same basename in the same location but different relevant file extensions like /tmp/foo.js and /tmp/foo.ts), it logs an error, skips that specifier, and continues processing.

Running

console

Monorepos

For best results, run this within each workspace of the monorepo.

text

Supported cases

  • no file extension → .cts, .mts, .js, .ts, .d.cts, .d.mts, or .d.ts
  • .cjs.cts, .mjs.mts, .js.ts
  • .js.d.cts, .d.mts, or .d.ts
  • Package.json subpath imports
  • tsconfig paths (via @nodejs-loaders/alias)
    • In order to subsequently run code via node, you will need to add this (or another) loader to your own project. Or, switch to subimports.
  • Commonjs-like directory specifiers

Before:

ts

After:

ts

Ready to contribute?

Build your own codemod and share it with the community.