typescript - Bagaimana cara mengatur properti paths dalam proyek dengan beberapa tsconfig.json?


Saya memiliki struktur file berikut

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

Di base-tsconfig.json saya telah mengatur properti paths sebagai berikut

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

dan di tsconfig.json terlihat sebagai berikut

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

Itu seharusnya cukup, kan? Tapi saya masih mendapatkan pesan di bawah ini.

Tidak dapat menemukan modul 'utils'

Jawaban #1

Masalahnya adalah bahwa resolusi paths yang Anda berikan (utils/*) tidak dapat diselesaikan

import utils from `utils`

kamu harus menggunakan

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

atau jika Anda juga membutuhkan entri dengan lingkup atau sub-entri, seperti ini:

// 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`

Anda harus mencakup kedua kasus:

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

Jawaban #2

Opsi "paths" dapat digunakan untuk memberi tahu compiler tentang pemetaan tetapi itu tidak melakukan transformasi jalur ini sendiri. Anda dapat membaca lebih lanjut tentang ini di dokumentasi dan di masalah ini. Kemungkinan besar Anda menggunakan loader yang tidak memungkinkan pemetaan ulang, seperti require() di Node.js.

Ada paket yang tersedia untuk membantu menyelesaikan masalah ini seperti module-alias dan tsconfig-paths.

Artikel terkait