typescript - Exportera undermapp från paketet
Jag har ett Typescript-paket
package.json
src/
index.ts
common/
index.ts
sub/
index.ts
Jag vill kunna:
import {...} from '<package>';
import {...} from '<package>/sub';
Men inte för <package>/common
Är det möjligt att göra det utan anpassade deklarationsfiler?
Min package.json ser ut baserat på detta:
"exports": {
".": "./dist/index.js",
"./common": "./dist/common/index.js"
},
"typesVersions": {
"*": {
"common": ["declarations/common/index.d.ts"]
}
}
Med detta tillvägagångssätt har jag inga problem med Typescript-delen. Men när jag försöker bygga det, misslyckas det med JS:
Module not found: Error: Can't resolve '<package>/sub' in '...'
Svar #1
Jag är ärligt talat inte helt säker på varför detta fungerar, men detta block i min package.json fungerade för mig:
{
// ...
"files": [
"/dist"
],
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"exports": {
".": "./dist/index.js",
"./types": "./dist/types/index.js",
"./generate": "./dist/generate/index.js"
},
"typesVersions": {
"*": {
"types": [
"./dist/types/index.d.ts"
],
"generate": [
"./dist/generate/index.d.ts"
]
}
}
}
Min tsconfig.json ser ut så här:
{
"extends": "@tsconfig/node14/tsconfig.json",
"include": ["src/**/*"],
"compilerOptions": {
"lib": ["es2020", "dom"],
"declaration": true,
"outDir": "dist",
"module": "ESNext"
}
}
Och detta är min filstruktur:
package.json
tsconfig.json
dist/ // and all its subfolders
src/
generate/
index.ts
types/
index.ts
index.ts
