Búsqueda de sitios web

turborepo typescript construir aplicación node con dependencias de workspace


Intentando construir una API de Express dentro de un espacio de trabajo pnpm turborepo.

api tiene @my/shared como una dependencia, que es un paquete de espacio de trabajo local.

No he podido lograr que la compilación sea correcta. Creo que lo que necesito poder hacer es compilar la biblioteca compartida e incluirla en el proyecto API, pero para hacer esto necesitaría poder cambiar todas las declaraciones de importación para que Node pueda encontrar el módulo porque se importa como @my/shared.

estructura :

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

tsconfig base

{
  "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 expresos y compartidos

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

Simplemente quiero convertir esta aplicación de ts a js para ejecutarla en modo producción con pm2.

He encontrado muchos recursos pero no he podido encontrar nada que me ayude a lograr esto.

He intentado ejecutar tsc desde la raíz, ejecutar el resultado en node da el error:

`"Error: No se puede encontrar el módulo 'express'"`

He intentado ejecutar tsc a nivel de API, lo que da el siguiente error al ejecutar pnpm en /dist para instalar dependencias.

ERR_PNPM_WORKSPACE_PKG_NOT_FOUND: @my/shared

Respuesta #1

Tuve un problema similar y encontré la referencia y construí Express con éxito.

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

Puedes usar tsup para transcompilar el código fuente.