mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-20 22:51:17 -05:00
Allow export map entries to remap back to input files for a program (#47925)
* Allow export map entries to remap back to input files for a program * Fix file casing issues on windows * Implement abiguity error, doesnt quite work * Refine selection logic in error case to use getCommonSourceDirectory, add more tests
This commit is contained in:
20
tests/cases/compiler/nodeNextPackageImportMapRootDir.ts
Normal file
20
tests/cases/compiler/nodeNextPackageImportMapRootDir.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
// @module: nodenext
|
||||
// @outDir: ./dist
|
||||
// @rootDir: tests/cases/compiler
|
||||
// @filename: package.json
|
||||
{
|
||||
"name": "@this/package",
|
||||
"type": "module",
|
||||
"exports": {
|
||||
".": "./dist/index.js"
|
||||
},
|
||||
"imports": {
|
||||
"#dep": "./dist/index.js"
|
||||
}
|
||||
}
|
||||
// @filename: index.ts
|
||||
import * as me from "#dep";
|
||||
|
||||
me.thing();
|
||||
|
||||
export function thing(): void {}
|
||||
16
tests/cases/compiler/nodeNextPackageSelfNameWithOutDir.ts
Normal file
16
tests/cases/compiler/nodeNextPackageSelfNameWithOutDir.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
// @module: nodenext
|
||||
// @outDir: ./dist
|
||||
// @filename: package.json
|
||||
{
|
||||
"name": "@this/package",
|
||||
"type": "module",
|
||||
"exports": {
|
||||
".": "./dist/index.js"
|
||||
}
|
||||
}
|
||||
// @filename: index.ts
|
||||
import * as me from "@this/package";
|
||||
|
||||
me.thing();
|
||||
|
||||
export function thing(): void {}
|
||||
@@ -0,0 +1,21 @@
|
||||
// @module: nodenext
|
||||
// @outDir: ./dist
|
||||
// @declarationDir: ./types
|
||||
// @declaration: true
|
||||
// @filename: package.json
|
||||
{
|
||||
"name": "@this/package",
|
||||
"type": "module",
|
||||
"exports": {
|
||||
".": {
|
||||
"default": "./dist/index.js",
|
||||
"types": "./types/index.d.ts"
|
||||
}
|
||||
}
|
||||
}
|
||||
// @filename: index.ts
|
||||
import * as me from "@this/package";
|
||||
|
||||
me.thing();
|
||||
|
||||
export function thing(): void {}
|
||||
@@ -0,0 +1,26 @@
|
||||
// @filename: tsconfig.json
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "nodenext",
|
||||
"outDir": "./dist",
|
||||
"declarationDir": "./types",
|
||||
"composite": true
|
||||
}
|
||||
}
|
||||
// @filename: package.json
|
||||
{
|
||||
"name": "@this/package",
|
||||
"type": "module",
|
||||
"exports": {
|
||||
".": {
|
||||
"default": "./dist/index.js",
|
||||
"types": "./types/index.d.ts"
|
||||
}
|
||||
}
|
||||
}
|
||||
// @filename: index.ts
|
||||
import * as me from "@this/package";
|
||||
|
||||
me.thing();
|
||||
|
||||
export function thing(): void {}
|
||||
@@ -0,0 +1,37 @@
|
||||
// @noImplicitReferences: true
|
||||
// @filename: tsconfig.json
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "nodenext",
|
||||
"outDir": "./dist",
|
||||
"declarationDir": "./types",
|
||||
"composite": true
|
||||
}
|
||||
}
|
||||
// @filename: package.json
|
||||
{
|
||||
"name": "@this/package",
|
||||
"type": "module",
|
||||
"exports": {
|
||||
".": {
|
||||
"default": "./dist/index.js",
|
||||
"types": "./types/index.d.ts"
|
||||
}
|
||||
}
|
||||
}
|
||||
// @filename: index.ts
|
||||
export {srcthing as thing} from "./src/thing.js";
|
||||
// @filename: src/thing.ts
|
||||
// The following import should cause `index.ts`
|
||||
// to be included in the build, which will,
|
||||
// in turn, cause the common src directory to not be `src`
|
||||
// (the harness is wierd here in that noImplicitReferences makes only
|
||||
// this file get loaded as an entrypoint and emitted, while on the
|
||||
// real command-line we'll crawl the imports for that set - a limitation
|
||||
// of the harness, I suppose)
|
||||
import * as me from "@this/package";
|
||||
|
||||
me.thing();
|
||||
|
||||
export function srcthing(): void {}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
// @noImplicitReferences: true
|
||||
// @filename: tsconfig.json
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "nodenext",
|
||||
"outDir": "./dist",
|
||||
"declarationDir": "./types",
|
||||
"declaration": true
|
||||
}
|
||||
}
|
||||
// @filename: package.json
|
||||
{
|
||||
"name": "@this/package",
|
||||
"type": "module",
|
||||
"exports": {
|
||||
".": {
|
||||
"default": "./dist/index.js",
|
||||
"types": "./types/index.d.ts"
|
||||
}
|
||||
}
|
||||
}
|
||||
// @filename: index.ts
|
||||
export {srcthing as thing} from "./src/thing.js";
|
||||
// @filename: src/thing.ts
|
||||
// The following import should cause `index.ts`
|
||||
// to be included in the build, which will,
|
||||
// in turn, cause the common src directory to not be `src`
|
||||
// (the harness is wierd here in that noImplicitReferences makes only
|
||||
// this file get loaded as an entrypoint and emitted, while on the
|
||||
// real command-line we'll crawl the imports for that set - a limitation
|
||||
// of the harness, I suppose)
|
||||
import * as me from "@this/package";
|
||||
|
||||
me.thing();
|
||||
|
||||
export function srcthing(): void {}
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
// @module: nodenext
|
||||
// @outDir: /pkg/dist
|
||||
// @declarationDir: /pkg/types
|
||||
// @declaration: true
|
||||
// @rootDir: /pkg/src
|
||||
// @filename: /pkg/package.json
|
||||
{
|
||||
"name": "@this/package",
|
||||
"type": "module",
|
||||
"exports": {
|
||||
".": {
|
||||
"default": "./dist/index.js",
|
||||
"types": "./types/index.d.ts"
|
||||
}
|
||||
}
|
||||
}
|
||||
// @filename: /pkg/src/index.ts
|
||||
import * as me from "@this/package";
|
||||
|
||||
me.thing();
|
||||
|
||||
export function thing(): void {}
|
||||
@@ -0,0 +1,17 @@
|
||||
// @module: nodenext
|
||||
// @outDir: ./dist
|
||||
// @rootDir: tests/cases/compiler
|
||||
// @filename: package.json
|
||||
{
|
||||
"name": "@this/package",
|
||||
"type": "module",
|
||||
"exports": {
|
||||
".": "./dist/index.js"
|
||||
}
|
||||
}
|
||||
// @filename: index.ts
|
||||
import * as me from "@this/package";
|
||||
|
||||
me.thing();
|
||||
|
||||
export function thing(): void {}
|
||||
Reference in New Issue
Block a user