Я пытаюсь настроить свой проект как monorepo, но у меня возникла досадная проблема с маршрутизацией с помощью TypeScript & Lerna.
У меня есть 2 реагирующих проекта, API и основной проект который хранит мою модель предметной области и определения машинописи. На данный момент мне нужно иметь возможность использовать код из ядра в моем API и определения в моих 2 реагирующих проектах.
Проблема, с которой я сталкиваюсь, заключается в том, что мне нужно найти путь от root каждой упаковки. Например, @projectName/core/src/models/myModel
вместо @projectName/core/models/myModel
. Каталог dist
не содержит этой структуры, и именно это я и хочу импортировать.
Я нашел пару статей, предлагающих, как его настроить, но я все еще сталкиваюсь с проблемами и не уверен, где Я ошибаюсь.
Я сейчас сосредоточен на экспорте @projectName/core
.
. / Tsconfig. json
{
"exclude": ["node_modules", "dist"],
"compilerOptions": {
"baseUrl": ".",
"sourceMap": true,
"composite": true,
"declaration": true,
"paths": {
"@projectName/core": ["packages/core/src"],
"@projectName/api": ["packages/api/src"],
"@projectName/admin": ["packages/admin/src"],
"@projectName/client": ["packages/client"]
}
}
}
. / Package . json
{
"name": "projectName",
"private": true,
"devDependencies": {
"lerna": "^3.20.2",
"typescript": "^3.8.3"
}
}
. / Packages / core / tsconfig. json
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"lib": ["ES2019"],
"module": "commonjs",
"target": "ES2019",
"strict": true,
"resolveJsonModule": true,
"moduleResolution": "node",
"sourceMap": true,
"outDir": "./dist",
"rootDir": "./src"
},
"include": ["src/**/*"]
}
. / Packages / core / package. json
{
"name": "@projectName/core",
"version": "0.0.1",
"private": true,
"directories": {
"lib": "dist",
"test": "tests"
},
"files": [
"dist"
],
"scripts": {
"build": "npm run clean && npm run compile",
"clean": "rm -rf ./dist",
"compile": "tsc"
},
"dependencies": {
},
"devDependencies": {
"typescript": "^3.8.3",
"webpack": "^4.43.0",
}
}
. / Packages / api / tsconfig. json
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"lib": ["ES2019"],
"module": "commonjs",
"target": "ES2019",
"strict": true,
"resolveJsonModule": true,
"moduleResolution": "node",
"sourceMap": true,
"outDir": "dist"
},
"include": ["src/**/*"]
}
. / Packages / api / package. json
{
"name": "@projectName/api",
"version": "0.0.1",
"description": "api",
"files": [
"dist"
],
"main": "dist/server.js",
"scripts": {
},
"dependencies": {
"@packageName/core": "^0.0.1",
},
"devDependencies": {
"typescript": "^3.8.3",
"webpack": "^4.43.0",
"webpack-node-externals": "^1.7.2"
},
"private": true
}
Я удалил зависимости из приведенного выше, чтобы они были читабельными.
Эти настройки были добавлены в ./tsconfig.json
в попытке заставить это работать:
"composite": true,
"declaration": true
Любая помощь будет высоко ценится. Спасибо!