טורבורפו Typescript לבנות אפליקציית Node עם תלותים של סביבת עבודה


מנסה לבנות API של Express בתוך סביבת העבודה של pnpm turborepo.

ל-API יש את @my/shared כתלות שהיא חבילת עבודה מקומית.

לא הצלחתי לבנות את הגירסה בצורה נכונה. אני חושב שהדבר שאני צריך להיות מסוגל לעשות הוא לבנות את הספרייה המשותפת ולכלול אותה בפרויקט ה-API, אבל כדי לעשות זאת אני אצטרך להיות מסוגל לשנות את כל פקודות הייבוא כך שנוד יוכל למצוא את המודול כי הוא מיובא כ-@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"]
}

קונפיגורציות ts משותפות ומובעות

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

אני פשוט רוצה להמיר את אפליקציית ה-ts הזו ל-js כדי להריץ אותה במצב פרודקשן עם pm2.

מצאתי המון משאבים אך לא הצלחתי למצוא משהו שיעזור לי להשיג את זה.

ניסיתי להריץ את tsc מהשורש, והרצת הפלט ב-node נותנת את השגיאה:

`״שגיאה: לא ניתן למצוא את המודול 'express'״`

ניסיתי להריץ tsc ברמת ה-API מה שנותן את השגיאה הבאה כאשר מריצים pnpm ב-/dist כדי להתקין תלותים.

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 כדי לתרגם מחדש את המקור.