Hur man endast exporterar d.ts från mitt TypeScript-projekt?
För mitt TypeScript-projekt vill jag skapa en d.ts-fil endast för ingångsfilen:
när jag har en index.ts:
import a from './a';
import b from './b';
export default {
a,
b
};
när jag kompilerar med ts med konfigurationen tsconfig.json:
{
"compilerOptions": {
"outDir": "./lib",
"declarationDir": "./build",
"moduleResolution": "node",
"strictNullChecks": true,
"experimentalDecorators": true,
"allowSyntheticDefaultImports": true,
"noUnusedParameters": true,
"noUnusedLocals": true,
"noImplicitAny": true,
"target": "es6",
"declaration": true,
"lib": [
"dom",
"es2015",
"es2016",
],
},
"include": [
"packages/index.ts",
"typings"
],
"exclude": [
"node_modules",
"**/__tests__",
"**/__mocks__",
]
}
skulle generera trädfil a.d.ts, b.d.ts, index.d.ts
hur man endast skriver ut index.d.ts
Svar #1
Du kan använda en separat tsc-körning med outFile för att producera en enda .d.ts-fil som har ett declare module-block för varje ursprungligt modul. Du kan göra detta genom att ta bort declaration och declarationDir-alternativen från din ursprungliga tsconfig.json och skapa en separat tsconfig.declaration.json med:
{
"extends": "./tsconfig.json",
"compilerOptions": {
"module": "amd", // https://github.com/Microsoft/TypeScript/issues/27117
"declaration": true,
"emitDeclarationOnly": true,
"outFile": "build/index.d.ts"
}
}
Det enda problemet är att TypeScript 3.0.3 felaktigt skickar igenom relativa importvägar såsom ./a till utdata, så för tillfället behöver du ställa in dina modulupplösningsalternativ så att du kan använda icke-relativa importvägar. Problemet har åtgärdats i denna pull-begäran, men åtgärden har inte släppts per 2018-09-15.
Se denna långa tråd för diskussion om andra tillvägagångssätt för deklarationssammanställning.
