node.js - Hvilke verdier bør jeg bruke i package.json for feltet 'types'?


Jeg er nybegynner innen feltet JS/TS, og for læringsformål lager jeg en NPM-pakke i TypeScript. Før jeg bygger og laster opp artefaktene til registeret, kompilerer jeg TS-filene til JS-filer ved hjelp av tsc-kommandoen. Følgende er min tsconfig.json:

{
    "compilerOptions": {
        "target": "es6",
        "module": "commonjs",
        "declaration": true,
        "outDir": "./dist",
        "strict": true
    },
    "include": ["src/"],
    "exclude": [ "node_modules/", "tests/" ]
}

Etter kompilering har dist-mappen samme mappestruktur som min src-mappe, men den har alle js-filer og .d.ts-filer i stedet for ts-filer, noe som er forventet. Spørsmålet mitt er hvordan jeg kan inkludere type definitions-filene?

Når jeg googlet dette, fant jeg ut at package.json-filen har et types-felt, og til det tildeler vi banen til index.d.ts, som i mitt tilfelle ville være dist/index.d.ts. Men det er ikke den eneste filen som har typedefinisjoner. Det finnes mange andre i mange kataloger i dist-katalogen.

Hvordan inkluderer jeg alle disse typedefinisjonene i det endelige artefaktet? Jeg prøvde også å tilordne dist/**/*.d.ts til types-feltet i package.json, men det fungerte ikke.

Jeg vil også vite hva som er den riktige måten å legge til typer i en TypeScript-pakke på.

Svar #1

Et alternativ er å eksportere alle de nyttige typene på nytt i index.ts slik at de til slutt kan inkluderes i index.d.ts. Jeg tror AWS SDK gjorde det på denne måten.

For eksempel, i index.ts:

export { MyType, MyService, MyOption } fra './other-file.ts';

Så du kan bare legge inn nedenfor i package.json

"types": "dist/index.d.ts"

Relaterte artikler