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.
