typescript - VsCode automatisk import med TS-alias från node_modules


Jag har en Angular-app med @atmlib-paketet. tsconfig:s relevanta inställningar är följande:

{
    "compilerOptions": {
        "baseUrl": "./",
        "paths": {
            "@share/*": ["src/app/share/*"],
            "@proto/*": ["node_modules/@atmlib/proto/grpc-web/web/*"],
        }
    }
}

Aliaset @proto fungerar bra, men VsCodes autokomplettering använder det inte:

Även om alla de andra aliasen fungerar bra och kan importeras automatiskt:

Frågan är hur man får automatisk import att fungera med aliaserat paket från node_modules?

Svar #1

Jag har precis samma problem 🤷♂️

{
  "compilerOptions": {
    "allowJs": true,
    "jsx": "react",
    "baseUrl": ".",
    "checkJs": true,
    "noEmit": true,
    "esModuleInterop": true,
    "resolveJsonModule": true,
    "paths": {
      "theme/*": [
        "./src/web/theme/*",
        "./node_modules/my-library/my-module-a/web/theme/*",
        "./node_modules/my-library/my-module-b/web/theme/*",
        "./node_modules/my-library/my-module-c/web/theme/*",
      ],
      "web/*": [
        "./src/web/*",
        "./node_modules/my-library/my-module-a/web/*",
        "./node_modules/my-library/my-module-b/web/*",
        "./node_modules/my-library/my-module-c/web/*",
      ],
      "server/*": ["./node_modules/my-library/src/server/*"],
      "config/*": [
        "./src/config/*",
        "./node_modules/my-library/my-module-a/config/*",
        "./node_modules/my-library/my-module-b/config/*",
        "./node_modules/my-library/my-module-c/config/*",
      ],
    }
  }
}

när jag försöker importera det skulle autokompletteringen föredra att använda my-library som ett paket istället för aliasen, till exempel skulle det föreslå:

import Image from "my-library/my-module-a/web/theme/Image"
import Image from "my-library/my-module-b/web/theme/Image"
import Image from "my-library/my-module-c/web/theme/Image"

Men det kommer inte att föreslå:

import Image from "theme/Image"

även om det aliaset fungerar alldeles utmärkt.