Как настроить 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"
}
}