Tìm kiếm trang web

turborepo typescript xây dựng ứng dụng node với các phụ thuộc workspace


Đang cố gắng xây dựng một API express bên trong workspace pnpm turborepo.

api có @my/shared như một phụ thuộc, đó là một gói trong workspace cục bộ.

Tôi đã không thể tạo bản build đúng cách. Tôi nghĩ điều tôi cần làm là xây dựng thư viện chia sẻ và bao gồm nó vào dự án API, nhưng để làm được điều này, tôi sẽ cần thay đổi tất cả các câu lệnh import để cho node có thể tìm thấy module vì nó được import dưới dạng @my/shared.

cấu trúc :

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

tsconfig cơ bản

{
  "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"]
}

tsconfigs được biểu đạt & chia sẻ

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

Tôi chỉ muốn chuyển ứng dụng ts này sang js để chạy ở chế độ sản xuất với pm2.

Tôi đã tìm thấy nhiều tài nguyên nhưng không thể tìm thấy điều gì giúp tôi đạt được điều này.

Tôi đã thử chạy tsc từ thư mục gốc, chạy kết quả đầu ra trong node thì báo lỗi:

`"Lỗi: Không thể tìm thấy module 'express'"`

Tôi đã thử chạy tsc ở cấp độ API, điều này gây ra lỗi sau khi chạy pnpm trong /dist để cài đặt các phụ thuộc.

ERR_PNPM_WORKSPACE_PKG_NOT_FOUND: @my/shared

Câu trả lời #1

Tôi đã gặp vấn đề tương tự và tìm thấy tài liệu tham khảo và xây dựng Express thành công.

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

Bạn có thể sử dụng tsup để biên dịch lại mã nguồn.