Как импортировать приложения в пакеты - турбо монорепо

Я пытаюсь импортировать некоторые серверные методы apps/backend/... в свой packages/graphql, потому что мои преобразователи Graphql на самом деле вызывают внутренние маршруты, но я не вижу, как это сделать в документации турбо-монорепо...

мой текущий интерфейс (client) импортирует "@repo/graphql" : "*", но теперь мне нужен пакет Graphql для доступа к моим методам внутреннего интерфейса (server), но я не могу просто обойти это с помощью относительного пути, потому что Turbo не разрешит его после развертывания.

есть у кого-нибудь идея?

Не могли бы вы порекомендовать мне использовать Graphql в качестве приложения в /apps или, возможно, стратегия пакетов — это хорошая идея?

вот некоторая информация:

скажем, у меня есть getComment из моего ./apps/server/src/domain/task/comment.controller.ts и что я получаю доступ к этому ресурсу через Graphql ./packages/graphql/graphql/src/resolvers.ts, распознаватель вызовет этот конкретный метод.

.
├── apps
│   ├── client
│   └── server
├── packages
│   ├── graphql
│   │  ├── graphql
│   │  │   ├── schema.gql
│   │  │   ├── resolvers.ts 
│   │  │   └── src
│   │  ├── package.json
│   │  ├── src
│   │  │   ├── schema.graphql
│   │  │   └── server.ts
│   │  ├── README.md
│   │  ├── codegen.yml
│   │  └── tsconfig.json
│   └── prisma
├── README.md
├── docker-compose.yml
├── eslint.config.mjs
├── makefile
├── package-lock.json
├── package.json
├── prettier.config.mjs
├── tsconfig.json
└── turbo.json
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам необходимо экспортировать свои методы из приложения ./apps/server Nestjs, как это делает пакет в монорепо.

Вот шаги, которые помогут это сделать.

  1. Создайте файл src/export.ts в apps/server и экспортируйте * из любого файла или метода, который должен использоваться пакетом Graphql.
// src/export.ts  

export * from "./domain/task/comment.controller.ts"
  1. экспортировать src/export.ts из apps/server/package.json
// ./apps/server/package.json

{
  "name": "server",
  "version": "0.0.1",
  "description": "",

  // like this
  "exports": {
    ".": "./src/export.ts"
  },



 "dependencies":{
    "@nestjs/common": "^10.0.0",
  }

}

  1. Теперь вам нужно импортировать этот пакет в ваш пакет Graphql, т. е. /packages/graphql. В ./packages/graphql/package.json добавьте "server":"workspace:*" к объекту dependencies.
// ./packages/graphql/package.json

  {
    "name": "your-graphql-package",
    "version": "0.0.1",
    "description": "",
    "exports": {
      "types": "./src/export.d.ts"
    },
   "dependencies":{
      "server":"workspace:*"
     // other dependencies
    }
  }
  1. И, наконец, запустите npm/pnpm/yarn/bun install, чтобы позволить турборепо разрешить зависимости для graphql пакета из server app.

  2. Теперь вы можете импортировать пакеты вашего сервера в пакеты Graphql, выполнив что-то вроде.

// ./packages/graphql/index.ts

import { CommentController } from "server";
    

Хотя не рекомендуется экспортировать из папки apps/ в packages/. Возможно, вы захотите пересмотреть архитектуру вашего приложения.

Другие вопросы по теме