Как настроить Lerna Monorepo с помощью TypeScript

У меня есть core библиотека со следующим в package.json:

"main": "dist/cjs/index.js",
"module": "dist/esm/index.js",
"es2015": "dist/es2015/index.js",
"types": "dist/es2015/index.d.ts",
"typings": "dist/es2015/index.d.ts",

Библиотека встраивает код TypeScript в dist/ папка для раздачи. Исходный код лежит в src/,

Я использую Lerna и monorepos, и я пытаюсь получить другой пакет / модуль для загрузки кода TypeScript как есть:

import { someTypeScriptStuff } from '@test/core'

Однако это не работает. И IntelliJ, и TSLint жалуются на отсутствующий модуль. Если я изменю значение main поле в package.json в src/index.ts тогда это работает.

Я не хочу компилировать код TS в dist все время в разработке, потому что это больно.

Очевидно, я не могу изменить основное поле на src/index.ts либо потому, что он должен ссылаться на обычный JavaScript, который работает как есть в узлах / браузерах.

Есть ли специфичное для TypeScript поле, которое я мог бы использовать в package.json что могли бы использовать IntelliJ и TSLint вместо этого? Это было бы идеально.

Единственное решение, которое я могу придумать, - это буквально main в поле укажите код TS и измените процесс сборки, чтобы изменить содержимое упакованного модуля NPM путем замены main поле назад к dist/cjs/index.js для распространения. Я бы хотел этого избежать.

1 ответ

Решение

Я решил это с этим в корне tsconfig.json:

{
  "compilerOptions": {
    "baseUrl": "./packages",
    "paths": {
      "@test/*": ["./*/src"]
    }
  }
  ...
}

А потом я добавил это в каждый пакет tsconfig.json:

{
  "extends": "../../tsconfig.json",
  "compilerOptions": {
    "rootDir": "src"
  }
}
Другие вопросы по тегам