microsoft / microsoft/TypeScript

[Compiler API] Reuse default compiler host when customizing module resolution

Open
#44,350 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Awaiting More Feedback Suggestion
Dominant language
Go
Stars
111k
Forks
14.4k
Avg merge
1d 19h
Merged PRs (30d)
117

Description

Suggestion

A very similar question already has been asked here four years ago by @vivin:
Implementing custom module-resolution logic using Compiler API - StackOverflow

I need the same right now, and it is a pity that apparently, you still need to rewrite the entire compiler host configuration just in order to customize one aspect. What I would prefer to do would be something like:

const host = ts.createCompilerHost(options);
host.resolveModuleNames = myResolver;
const program = ts.createProgram(sourceFiles, options, host);

But this still seems to be impossible right now?

🔍 Search Terms

customize module resolution, configure compiler host, resolveModuleNames

✅ Viability Checklist

My suggestion meets these guidelines:

  • This wouldn't be a breaking change in existing TypeScript/JavaScript code
  • This wouldn't change the runtime behavior of existing JavaScript code
  • This could be implemented without emitting different JS based on the types of the expressions
  • This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, new syntax sugar for JS, etc.)
  • This feature would agree with the rest of TypeScript's Design Goals.

💻 Use Cases

  • customize compiler more easily without reinventing the wheel
  • if you need to reinvent the wheel, the code will get harder to maintain against future changes to the default compiler host

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the Compiler API entry points named in the issue: ts.createCompilerHost, resolveModuleNames, and ts.createProgram. Determine how the default compiler host handles module resolution and how a custom resolver could be layered onto it; done means the requested customization works without recreating the entire host configuration.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
compilers
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.