visual studio code - VSCode Intellisense TypeScript: Exkludera sökväg som refereras i paths


Jag arbetar med en Angular-applikation, med en del av koden grupperad i sina egna (npm) projekt så att de kan refereras av andra applikationer.

När jag skriver kod i mappen app, föreslår VSCodes Intellisense följande sökvägar för automatisk import, båda fungerar:

import 'FooComponent' from module "../../../projects/company/shared/src/foo/foo.component";
import 'FooComponent' from module "@company/shared";

Mitt mål är att göra "@company/shared" importen till standardvalet. Det skulle vara ännu bättre om den relativa sökvägen kunde döljas helt. Hittills har jag försökt följande:

  1. typescript.preferences.importModuleSpecifier: non-relative
  2. typescript.preferences.importModuleSpecifierEnding: minimal
  3. Utesluter katalogen i tsconfig.json efter att ha specificerat sökvägarna.

Hittills har dessa inte löst mitt problem.

Jag har en Angular-projektstruktur som liknar denna:

ApplicationName
  - dist
  - e2e
  - node_modules
  - projects
    - company
      - domain
      - shared
  - src
    - app
  tsconfig.json

Inom tsconfig.json refererar jag till shared-projektet i paths:

{ 
  "compilerOptions": {
    // standard stuff
    "baseUrl": "src",
    "paths": {
      @company/domain: [
        ../projects/company/domain/src/public-api
      ],
      @company/shared: [
        ../projects/company/shared/src/public-api
      ]
    },
    "exclude": [
      "./dist/**,",
      "**/projects/company"
    ]
}

Finns det ett sätt att dölja det långa "../../../projects/company/shared/src/foo/foo.component" importförslaget? Det tar upp standarden och skapar brus när det finns flera autokompletteringsförslag för foo.

Svar #1

Lägger till

"typescript.preferences.importModuleSpecifier": "project-relative"

till settings.json i vscode fungerade för mig.

Jag var tvungen att starta om TS-servern för att den skulle dyka upp. (Kommandopalett --> Typescript: Restart TS Server.)

Nu är standardförslaget för import @company/packageName, vilket är vad jag ville ha.

Svar #2

I mitt fall var jag tvungen att ta bort alla TypeScript-importförlängningar (auto import, TypeScript Hero, TypeScript Importer), och sedan ändra min : typescript.preferences.importModuleSpecifier från relativ till projekt-relativ.

Relaterade artiklar