ウェブサイト検索

turborepo でワークスペース依存関係を持つ TypeScript ビルドノードアプリ


pnpm turborepo ワークスペース内で express API を構築しようとしています。

api は依存関係として @my/shared を持っており、これはローカルのワークスペースパッケージです。

ビルドを正しく行うことができませんでした。必要なのは共有ライブラリをビルドして API プロジェクトに含めることだと思いますが、これを行うには、すべてのインポート文を変更して Node がモジュールを見つけられるようにする必要があります。なぜなら、それは @my/shared としてインポートされているからです。

構造 :

apps/
  /api <- express (depends on @my/shared)
packages/
  /shared <- @my/shared

基本 tsconfig

{
  "compilerOptions": {
    "target": "ES2017",
    "lib": ["dom", "dom.iterable", "esnext"],
    "allowJs": true,
    "checkJs": true,
    "skipLibCheck": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "esModuleInterop": true,
    "module": "CommonJS",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "jsx": "preserve",
    "noUncheckedIndexedAccess": true,
    "composite": false,
    "declaration": true,
    "declarationMap": true,
    "inlineSources": false,
    "outDir": "./dist"
  },
  "exclude": ["node_modules", "build", "dist", ".next", ".expo"]
}

expressおよび共有のtsconfig

"extends": "../../tsconfig.json",
  "compilerOptions": {
    "baseUrl": "src",
    "paths": {
      "~/*": ["*"]
    },
    "module": "commonjs",
    "outdir": "./dist"
  },
 "include": [
    "src",
  ]
}

私は単純に、このTSアプリをJSに変換して、PM2で本番モードで実行したいだけです。

私はたくさんの資料を見つけましたが、これを達成するのに役立つものは何も見つけられませんでした。

ルートから tsc を実行して、出力を node で実行しようとすると、次のエラーが発生します:

「エラー: モジュール 'express' が見つかりません」

私は API レベルで tsc を実行しようとしましたが、/dist で pnpm を実行して依存関係をインストールすると次のエラーが発生します。

ERR_PNPM_WORKSPACE_PKG_NOT_FOUND: @my/shared

回答 #1

私は同じような問題を抱えていて、参考資料を見つけ、Expressを無事に構築しました。

  • https://github.com/Riley-Brown/turbo-repo-express-next-example
  • https://github.com/vercel/turbo/tree/main/examples/kitchen-sink

ソースをトランスコンパイルするためにtsupを使用できます。