typescript - Hvordan sette paths-egenskapen i et prosjekt med flere tsconfig.json?


Jeg har følgende filstruktur

|__ app1/
|   |__ tsconfig.json
|__ utilities/
|   |__ files.ts
|__ base-tsconfig.json

I base-tsconfig.json har jeg satt paths-egenskapen som følger

"compilerOptions": {
        "baseUrl": ".",
        "paths": {
            "utils/*": ["utilities/*"]
        }
}

og i tsconfig.json ser det slik ut

{
    "extends": "../base-tsconfig",
}

Det burde være nok, ikke sant? Jeg får fortsatt meldingen nedenfor.

Kan ikke finne modul 'utils'

Svar #1

Problemet er at paths-oppløsningen du har oppgitt (utils/*) ikke kan løses

import utils from `utils`

du bør bruke

"paths": {
            "utils": ["utilities"]
        }

eller hvis du også trenger avgrensede oppføringer eller underoppføringer, som dette:

// direct import from the `index.ts` barrel
// covered with `"utils": ["utilities"],`
import utils from `utils`

// import from a scoped entry (sub-entry):
// covered with `"utils/*": ["utilities/*"]`
// it will import it from `utilities/special.ts`
import utilsSpecial from `utils/special`
// or, it will import just `utilsSpecialAdd` exported symbol from the same `utilities/special.ts`
import { utilsSpecialAdd } from `utils/special`

du bør dekke begge tilfeller:

"paths": {
            "utils": ["utilities"],
            "utils/*": ["utilities/*"]
        }

Svar #2

Alternativet "paths" kan brukes for å informere kompilatoren om kartlegginger, men det utfører ikke disse sti-transformasjonene selv. Du kan lese mer om dette i dokumentasjonen og i denne saken. Mest sannsynlig bruker du en loader som ikke tillater omskriving, slik som Node.js's require().

Det finnes pakker tilgjengelig for å hjelpe med å løse dette problemet, slik som module-alias og tsconfig-paths.

Relaterte artikler