На официальном сайте Nx не смог найти готовых примеров конфигурации Nx для развертывания fullstack-бойлерплейта для фронтенд и бэкэнд - Angular + NestJS. После некоторых поисков нашел такой пример на StackOverflow - NX Monorepo (NestJS/Angular).
Ниже привел более подробный вариант описания этого способа.
Пошаговая инструкция Link to heading
Устанавливаем Nx глобально в системе - для более удобной последующей работы Installing Nx Globally:
npm add --global nx@latest
Переходим к процессу развертывания - инициализируем новый 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-проекте.
Дополнительные источники Link to heading
В процессе общения по текущей теме в Discord (Nx-форум) c пользователем @rujorgensen последний любезно предложил свой вариант готового решения - nx-workspace. Можно сделать fork репозитория - и попробовать использовать его, как вариант.
Еще один вариант создания fullstack-бойлерплейта для фронтенд и бэкэнд - Создание пустого проекта с помощью NestJS-mod. Идея проекта - не только пустые приложения сделать, но и наполнить бойлерплейтом, стандартным который обычно используется.
Проверка первоначального решения Link to heading
Как проверка работоспособности первоначального решения - привожу ссылку на учебный проект Task Manager.
На момент написания статьи - проект находится в стадии разработки.
UPD Link to heading
Проект Nx находится в активной разработке и половина описанных шагов (на момент написания данного поста) - уже не актуальны на число 15.08.2024.