microsoft / microsoft/TypeScript
content-mapper generates inconsistent declaration extensions, making management of package.json#exports hard / verbose
@andrewbranch がすでに取り組んでいます。
2026年8月31日 から。
- 主要言語
- Go
- スター
- 111k
- フォーク
- 14.3k
- 平均マージ
- 2日 4時間
- マージ済み PR(30日)
- 132
説明
### 🔎 Search Terms
- `content-mapper`
- `extensions custom declarations`
### 🕗 Version & Regression Information
Using:
```
"typescript": "7.1.0-dev.20260821.1"
```
### ⏯ Playground Link
n/a
### 💻 Code
Here is the repo with the code: https://github.com/NullVoxPopuli/ember-content-mapper/tree/main/examples/cli-library-v2
As you can see, we have 3 different declaration extensions
- `.d.ts`
- `.d.gjs.ts`
- `.d.gts.ts`
Which makes the package.json `exports` mapping hard, because for each file type (which can change as refactoring occurs), I'd have to specify different `types` globs depending on which public entrypoint maps to which file.
It seems no resolving tool (node, rollup, etc) supports _arrays_ of globs for package.json#exports like tsconfig.json#compilerOptions.paths does
### 🙁 Actual behavior
Too many declaration extension types
### 🙂 Expected behavior
I'm compliling to JS (not with tsc), so I don't think the emitted imports, nor the declarations, should have any extension other than `.d.ts` (with the in-declaration imports being extensionless, ofc)
### Additional information about the issue
Somewhat related, but I've battled this quite a bit using TS < 7, and have hacked around it via https://github.com/NullVoxPopuli/fix-bad-declaration-output and https://github.com/embroider-build/embroider/blob/5449eb2944cd13548794ceff97df1d86a8c5d53d/packages/addon-dev/src/rollup-declarations.ts#L127
as far as I know, this is an issue in other ecosystems, like MDX
(and any ecosystem that has a custom syntax, and compiles to JS for library publishing)
Potentially related issues:
- https://github.com/microsoft/TypeScript/issues/61037
Docs I know about:
- https://www.typescriptlang.org/tsconfig/#allowImportingTsExtensions
- https://www.typescriptlang.org/tsconfig/#allowArbitraryExtensions (I think ? (idk actually) this option might be the problem, because it assumes the file isn't transformed for publish)
The full expanded tsconfig
```
{
"compilerOptions": {
"allowJs": true,
"allowImportingTsExtensions": true,
"emitDeclarationOnly": true,
"declaration": true,
"declarationDir": "./declarations",
"declarationMap": true,
"experimentalDecorators": true,
"module": "esnext",
"moduleResolution": "bundler",
"noEmit": false,
"noUncheckedIndexedAccess": true,
"noEmitOnError": false,
"rootDir": "./src",
"skipLibCheck": true,
"strict": true,
"target": "es2024",
"types": [],
"verbatimModuleSyntax": true,
"allowSyntheticDefaultImports": true,
"isolatedModules": true,
"preserveConstEnums": true
},
"files": [
"./src/index.ts",
"./src/template-registry.ts",
"./src/utils/format.ts"
],
"include": [
"./src/**/*"
],
"exclude": [
"/examples/ember-library-v2/declarations"
]
}
```
I've also tried with adding:
`allowArbitraryExtensions: true` and `rewriteRelativeImportExtensions: true`
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
評価
この issue はまだ評価されていません。