[api-extractor] Keep separate d.ts files but filter public API
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 25/100
- Tipo de issue
- Funcionalidade
- Clareza
- Razoavelmente clara
- Status de atividade
- Estagnada
- Stack de tecnologia
- node.js, typescript
- Domínio
- build-system, tooling
Direção de pesquisa
Start by reviewing API Extractor's reporting, rollups, and docs scenarios, especially dtsRollup, alongside TypeScript's per-module .d.ts output and the package.json exports mapping. Define how modules are crawled, public exports are filtered, and matching output files are generated. Done means separate non-empty .d.ts files preserve the source hierarchy, with discrepancies reported.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Summary
I'd like to use the API extractor functionalities to track my public API and filter anything non-public from my d.ts files.
At the same time I want to keep separate d.ts files (one for every .mjs just like typescript prints it).
Unfortunately the dtsRollup works in a "bundle/barrel module" mindset where you only have a single library file.
Details
In the era of ESM the practice of "bundling" when publishing packages seem to vanish to support features like tree-shaking better. Same applies for "barrel modules" which contain all exports of your library.
Following this strategy it would be great if api-extractor could do it's magic without expecting a single barrel d.ts.
Imagine a tsc output of .mjs and .d.ts files matching the .ts file hierarchy. I'd expect:
- api-extractor to crawl the modules of my project and build the public API surface.
- Potentially the
exportsproperty of the package.json is consulted to filter what's really public from an NPM perspective (mapping might be tricky though). - api-extractor writes the output
d.tsfiles with the same hierarchy to a given output directory (empty d.ts files are omitted). - Any warnings on discrepancies of exports are reported (e.g. a public api exposes a filtered private one).
Standard questions
Please answer these questions to help us investigate your issue more quickly:
| Question | Answer |
|---|---|
@microsoft/api-extractor version? |
7.53.3 |
| Operating system? | Any |
| API Extractor scenario? | reporting (.api.md) / rollups (.d.ts) / docs (.api.json) |
| Would you consider contributing a PR? | Maybe, depends on the efforts |
| TypeScript compiler version? | 5.9.3 |
Node.js version (node -v)? |
v24.11.0 |
- Linguagem predominante
- TypeScript
- Estrelas
- 6.5k
- Forks
- 710
- Merge médio
- 1d 15h
- PRs com merge (30d)
- 37
Preparar o ambiente
Inicia o contêiner de desenvolvimento do projeto no navegador, com a sua própria conta do GitHub.
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Sem guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de microsoft/rushstack
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 1 dia
-
[rush] Upgrade the pnpm-sync-lib dependency to 0.3.5.Talvez já em andamento @martinnaj assumiu há 18 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
microsoft/rushstack#5971 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
Todas as issues de microsoft/rushstack
Issues semelhantes
-
freshness freshness:observed-only
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
thoroc/context-radar#280 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 66/100
-
documentation story
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
Mantenedores costumam responder em até 1 dia
-
Billing: computeBundleEconomicsFrom treats a NULL component cost as 0, inflating bundle marginAbertabug category:billing priority:p3 track:fast
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
LanternOps/breeze#9223 ·
Mantenedores costumam responder em até 1 dia