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を使用できます。