microsoft / microsoft/TypeScript

content-mapper generates inconsistent declaration extensions, making management of package.json#exports hard / verbose

Đang mở
#64,053 10 bình luận 0 reaction 1 người được giao Được @andrewbranch nhận Xem trên GitHub
Needs Investigation
Ngôn ngữ chính
Go
Star
111k
Fork
14.3k
Merge trung bình
2 ngày 4 giờ
Pull request đã merge (30 ngày)
132

Mô tả

### 🔎 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

Image

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`

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.