Pesquisa de site

Configurando eslint-import-resolver-typescript em monorepo


Estou tentando adicionar mapeamento de caminhos a um monorepo. Já tenho regras do eslint-plugin-import em vigor e estou recebendo um erro "Não é possível resolver o caminho para o módulo" em todas as importações mapeadas.

app/
├─ package/
│  ├─ src/
│  ├─ tsconfig.json
.eslintrc
tsconfig.json

.eslintrc parece

{
  "parser": "@typescript-eslint/parser",
  "plugins": [
    "@typescript-eslint",
    "import",
  ],
  "extends": [
    "eslint:recommended",
    "plugin:import/recommended",
    "plugin:import/typescript"
  ],
  "settings": {
    "import/resolver": {
      "typescript": {}
    }
  }
}

O tsconfig.json interno fica assim:

{
  "extends": "../tsconfig",
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "actions/*": ["src/actions/*"],
      "context/*": ["src/context/*"]
    }
  }
}

Os caminhos mapeiam muito bem, mas eu tenho o erro de lint "Não é possível resolver o caminho para o módulo 'context'" onde quer que eu tente usar o caminho mapeado.

Pesquisando sobre isso, descobri que preciso usar o pacote eslint-import-resolver-typescript, mas isso não fez os erros desaparecerem.

Resposta #1

Estas são as configurações de lint que acabaram funcionando:

"settings": {
  "import/parsers": {
    "@typescript-eslint/parser": [".ts", ".tsx"]
  },
  "import/resolver": {
    "typescript": {
      "project": ["tsconfig.json", "package/tsconfig.json"]
    },
    "node": {
      "project": ["tsconfig.json", "package/tsconfig.json"]
    }
  }
}

Não tenho certeza se as configurações do node são necessárias. Há mais conversas na página do import-js no GitHub.

Artigos relacionados