VS C не находит пакет в monorepo (не может найти имя [пакет]) - PullRequest
1 голос
/ 30 января 2020

Я установил монорепо в машинописи. Проблема, с которой я сталкиваюсь, заключается в том, что моя инфраструктура тестирования не может быть найдена (какой код Visual Studio мог бы до переключения на monorepo).

Я получаю следующую ошибку: Не удается найти имя «jest» или «description». .. et c. Я думаю, что код Visual Studio не может найти пакет jest npm. Когда я открываю папку de / cli, / server, / shared, VS C.

обнаруживает только пакет. Это структура моей папки:

/cli
   node_modules
   src
   tsconfig.json
/server
   node_modules
   src
   tsconfig.json
/shared
   node_modules
   src
   tsconfig.json
tsconfig.base.json
tsconfig.json

My tsconfig.base . json:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "lib": [
      "es2015"
    ],
    "strict": true,
    "declaration": true,
    "outDir": "dist",
    "sourceMap": true,
    "paths": {
      "@shared/*": [
        "./shared/src/*"
      ]
    }
  },
  "files": [],
  "references": [
    {
      "path": "./server"
    },
    {
      "path": "./cli"
    },
    {
      "path": "./shared"
    }
  ]
}

My cli tsconfig. json:

{
  "extends": "../tsconfig.base.json",
  "compilerOptions": {
    "baseUrl": "..",
    "outDir": "dist",
    "types": [
      "jest"
    ],
    "typeRoots": [
      "./node_modules/@types"
    ]
  },
  "include": [
    "src/**/*",
    "../shared/src/**/*"
  ],
  "exclude": [
    "node_modules",
    "**/*.test.ts"
  ]
}

Небольшой пример возникновения ошибки:

import { getUserInput } from "./console";
import { createInterface, ReadLineOptions } from "readline"; <----- error readline not found
jest.mock("readline"); <----- error jest not found

Надеюсь Вы могли бы помочь мне с настройкой.

РЕДАКТИРОВАТЬ: Я обнаружил, что когда я удаляю "**/*.test.ts" из исключения, он снова работает, как ожидалось. Но при компиляции я не хочу, чтобы тесты включались ...

1 Ответ

0 голосов
/ 11 марта 2020

Вы хотите попробовать это.

  1. Создайте tsconfig.build.json с текущими настройками tsconfig.json, исключая ваши тестовые файлы:
{
  "extends": "../tsconfig.base.json",
  "compilerOptions": {
    // your specific compiler options for this module
  },
  "exclude": [
    "node_modules",
    "**/*.test.ts"
  ]
}
Расширьте tsconfig.json новым tsconfig.build.json и удалите исключение из тестов:
{
  "extends": "./tsconfig.build.json",
  "exclude": [
    "node_modules",
  ]
}
Настройте команду построения в package.json:
{
  "name": "server",
  "scripts": {
    "build": "tsc -b tsconfig.build.json"
  }
}

Ваша предыдущая конфигурация не смогла разрешить и проверить тип членов Jest, потому что вы явно указали машинописи игнорировать тестовые файлы.

Я нашел этот ответ для себя, когда смотрел на другие монорасположения, например typcript-eslint / eslint-plugin-internal , делающий то же самое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...