typescript - Turborepo importné aliasy


Nastavujem monorepo pre niekoľko projektov v Typescripte, na ktorých pracujem, a mám problémy s aliasovaním importov. Moja adresárová štruktúra je nasledovná

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 má predvolený exportovaný modul, ktorý obsahuje metódy, ktoré používam na interakciu s Kafka. Chcel by som byť schopný importovať modul v project/apps/streaming pomocou cesty takto

import {Kafka} from 'shared-utils/clients'

/* OR */

import Kafka from 'shared-utils/clients/Kafka'

Videl som niekoľko zdrojov o aliasovaní importov v TypeScripte, ale je ťažké získať priamu odpoveď na toto. Momentálne mám súbory index.ts v každom adresári v src, ktoré sa spájajú do hlavného súboru index.ts. Je to dosť nepríjemné, pretože importy vyžadujú 2 riadky

import {Clients} from 'shared-utils'
import Kafka = Clients.Kafka

V tomto bode si ani nie som istý, či by som sa mal pokúšať toto konfigurovať cez Typescript, pnpm alebo Turborepo. Dúfam, že mi niekto môže ukázať, akú konfiguráciu je potrebné zmeniť, aby som mohol importovať spôsobom popísaným vyššie. Ďakujem!