typescript - hur man konfigurerar en Angular-projekts tsconfig paths[] utan lint-fel?


Vi har följande konfiguration i vår tsconfig.ts

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "src",
    "paths": {
      "@app/*": ["app/*"],
      "@pages/*": ["app/pages/*"]
      ...
    },

Då kan vi använda mycket renare imports i våra andra ts-filer, något som detta:

import {UrlConstants} from '@app/common/constants/url-constants';

Problem uppstår vid lintning av projektet:

Module '@app/common' is not listed as dependency in package.json

Finns det något sätt att lösa det utan att gå tillbaka till att använda ./***/***/ för importer?

Svar #1

Du kan konfigurera regeln med en vitlista som dokumenterat här https://palantir.github.io/tslint/rules/no-implicit-dependencies

Det kommer att se ut så här:

tslint.json

{
  "rules": {
    "no-implicit-dependencies": [
      true,
      [
        "app",
        "pages"
      ],
      "dev"
    ]
  }
}

Alternativet "dev" är egentligen inte för ditt scenario, men det är användbart om du lintar dina tester som jag gillar att göra.

Personligen tycker jag att regeln borde vara smartare och försöka tolka en tsconfig för paths till viss del. Ibland har man många paths och inte alla använder NPM. JSPM-användare kan behöva inaktivera regeln, vilket är synd eftersom regeln är mycket välmotiverad och mycket användbar om man inte stöter på detta grova hinder.

Detta bör nu fungera för @-prefixade sökvägar eftersom https://github.com/palantir/tslint/pull/4192 har blivit sammanslagen. Tills du kan uppgradera kan du behöva använda "app" och "pages".

Relaterade artiklar