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!