Как настроить Lerna Monorepo с помощью TypeScript - PullRequest
1 голос
/ 09 июня 2019

У меня есть библиотека 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 Ответ

1 голос
/ 09 июня 2019

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

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

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

{
  "extends": "../../tsconfig.json",
  "compilerOptions": {
    "rootDir": "src"
  }
}
...