На официальном сайте Nx я не смог найти готовых примеров конфигурации Nx для развертывания workspace - Angular + Nest.js. После некоторых поисков нашел такой пример на StackOverflow - NX Monorepo (NestJS/Angular).
Ниже привел более подробный вариант описания этого способа.
Первоначальное решение
Устанавливаем Nx глобально в системе - для более удобной последующей работы:
nx globally npm i -g nxПереходим к процессу развертывания - инициализируем новый workspace командой Installation:
npx create-nx-workspace
Need to install the following packages:
create-nx-workspace@19.2.3
Ok to proceed? (y)… задаем имя для нового проекта:
Where would you like to create your workspace? ‣ awesome-project … на вопрос о выборе предпочтительного стека отвечаем - None - сами наполним workspace нужными стеками чуть позднее:
? Which stack do you want to use? …
None: Configures a TypeScript/JavaScript project with minimal structure.
React: Configures a React application with your framework of choice.
Vue: Configures a Vue application with your framework of choice.
Angular: Configures a Angular application with modern tooling.
Node: Configures a Node API application with your framework of choice.… на вопрос о выборе типа репозитория - выбираем - Integrated Monorepo:
? Package-based monorepo, integrated monorepo, or standalone project? …
Package-based Monorepo: Nx makes it fast, but lets you run things your way.
Integrated Monorepo: Nx creates a monorepo that contains multiple projects.
Standalone: Nx creates a single project and makes it fast.… на предложение воспользоваться Nx Cloud отвечаем, что не хотим - Skip for now:
? Do you want Nx Cloud to make your CI fast? …
(it's free and can be disabled any time)
Yes, enable Nx Cloud
Yes, configure Nx Cloud for GitHub Actions
Yes, configure Nx Cloud for Circle CI
Skip for now… процесс инициализации занимает некоторое время, после чего получаем готовый пустой workspace:
NX Creating your v19.2.3 workspace.
✔ Installing dependencies with npm
✔ Successfully created the workspace: awesome-project.… переходим во вновь созданный проект:
cd awesome-project… добавляем необходимые Nx-зависимости:
npm i -D @nx/angular @nx/nest @nx/js… затем генерируем в workspace фронтенд на angular - @nx/angular:
nx g @nx/angular:app frontend-part… затем генерируем бекенд на nestjs - @nx/nest:
nx g @nx/nest:app backend-part… генерируем shared library @nx/js:library:
nx g @nx/js:lib shared-libС этого момента у нас есть базовая настройка. Мы можете импортировать общую библиотеку следующим образом::
import { sharedLib } from "@my-project/shared-lib";Если в дальнейшем в проекте планируется использовать Prisma и PostgreSQL, то по дальнейшим шагам можно ознакомиться здесь - Prisma - установка в Nest-проекте.
Дополнительные источники
В процессе общения по текущей теме в Discord (Nx-форум) c пользователем @rujorgensen последний любезно предложил свой вариант готового решения - nx-workspace.
Можно сделать fork репозитория - и попробовать использовать его, как вариант.
Проверка первоначального решения
Как проверка работоспособности первоначального решения - привожу ссылку на учебный проект Task Manager.
На момент написания статьи - проект находится в стадии разработки.