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

未关闭
#44,350 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
35/100
Issue 类型
功能
描述清晰度
基本清楚
活跃度
停滞
技术栈
typescript
领域
compilers

调研方向

首先跟踪 issue 中指定的 Compiler API 入口:ts.createCompilerHost、resolveModuleNames 和 ts.createProgram。确定默认编译器主机如何处理模块解析,以及如何在其上叠加自定义解析器;当所请求的自定义功能能够正常工作且无需重新创建整个主机配置时,即视为完成。

由索引模型根据 Issue 内容生成。

描述

Awaiting More Feedback Suggestion

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
主要语言
Go
星标
111k
派生
14.4k
平均合并
1 天 19 小时
30 天内合并 PR
117

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

microsoft/TypeScript 的其他 Issue

查看 microsoft/TypeScript 的全部 Issue

相似的 Issue

更多 Go Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。