typescript - Turborepo İçe Aktarma Takma Adları
Üzerinde çalıştığım birkaç Typescript projesi için bir monorepo kuruyorum ve import aliasing ile ilgili sorunlar yaşıyorum. Dizin yapım şu şekilde
project/
apps/
streaming/
package.json
tsconfig.json
src/
handlers/
KafkaHandler.ts
packages/
shared-utils/
package.json
tsconfig.json
src/
clients/
Kafka.ts
tsconfig/
base.json
project/packages/tsconfig/base.json{
"$schema": "https://json.schemastore.org/tsconfig",
"display": "Default",
"compilerOptions": {
"baseUrl": ".",
"declaration": true,
"declarationMap": true,
"esModuleInterop": true,
"module": "CommonJS",
"resolveJsonModule": true,
"skipLibCheck": true,
"sourceMap": true,
"target": "ES2019",
"types": ["node"]
}
}
project/packages/shared-utils/tsconfig.json{
"extends": "tsconfig/base.json",
"compilerOptions": {
"isolatedModules": true,
"baseUrl": "dist/src",
"outDir": "dist"
},
"include": [
"src"
],
"exclude": [
"node_modules"
]
}
project/apps/streaming/tsconfig.json{
"extends": "tsconfig/base.json",
"compilerOptions": {
"outDir": "dist"
},
"exclude": [
"node_modules"
],
"include": [
"./src"
],
}
project/apps/streaming/package.json{
"author": "",
"dependencies": {
"dotenv": "^16.3.1",
"kafkajs": "^2.2.4",
"lodash": "^4.17.21",
"minimist": "^1.2.8",
"prompts": "^2.4.2",
"shared-utils": "workspace:*",
"tiny-typed-emitter": "^2.1.0",
"tsconfig": "workspace:*"
},
"description": "",
"devDependencies": {
"@types/lodash": "^4.14.199",
"@types/node": "^20.8.10",
"@types/prompts": "^2.4.6",
"typescript": "^5.2.2"
},
"license": "ISC",
"main": "./dist/index.ts",
"name": "streaming",
"packageManager": "[email ",
"scripts": {
"build": "tsc",
"clean": "rm -rf dist && rm -rf node_modules",
"clean_build": "pnpm run clean && pnpm i && pnpm run build",
"test": "echo \"Error: no test specified\" && exit 1",
"compile": "tsc"
},
"version": "1.0.0"
}
projects/packages/shared-utils/src/clients/Kafka.ts, Kafka ile etkileşimde bulunmak için kullandığım yöntemleri içeren varsayılan olarak dışa aktarılmış bir modüle sahiptir. Modülü project/apps/streaming içinde şu şekilde bir yol kullanarak içe aktarabilmeyi isterim
import {Kafka} from 'shared-utils/clients'
/* OR */
import Kafka from 'shared-utils/clients/Kafka'
TypeScript import takma adlarıyla ilgili birkaç kaynağa göz attım, ancak bununla ilgili net bir cevap bulmak zor. Şu anda her klasörde src içindeki index.ts dosyalarım var ve bunlar kök index.ts dosyasına çıkıyor. Bu oldukça zahmetli çünkü importlar 2 satır gerektiriyor
import {Clients} from 'shared-utils'
import Kafka = Clients.Kafka
Bu noktada, bunu Typescript, pnpm veya Turborepo üzerinden mi yapılandırmam gerektiğinden emin değilim. Umarım birisi yukarıda açıklanan şekilde ithalat yapmama izin vermesi için hangi yapılandırmanın değiştirilmesi gerektiğini gösterebilir. Teşekkürler!