На официальном сайте Nx я не смог найти готовых примеров конфигурации Nx для развертывания workspace - Angular + Nest.js. После некоторых поисков нашел такой пример на StackOverflow - NX Monorepo (NestJS/Angular).
Ниже привел более подробный вариант описания этого способа.
Первоначальное решение
Устанавливаем Nx глобально в системе - для более удобной последующей работы:
1
| nx globally npm i -g nx
|
Переходим к процессу развертывания - инициализируем новый workspace командой Installation:
1
2
3
4
5
| npx create-nx-workspace
Need to install the following packages:
create-nx-workspace@19.2.3
Ok to proceed? (y)
|
… задаем имя для нового проекта:
1
| Where would you like to create your workspace? ‣ awesome-project
|
… на вопрос о выборе предпочтительного стека отвечаем - None - сами наполним workspace нужными стеками чуть позднее:
1
2
3
4
5
6
7
| ? 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:
1
2
3
4
5
| ? 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:
1
2
3
4
5
6
7
| ? 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:
1
2
3
4
| NX Creating your v19.2.3 workspace.
✔ Installing dependencies with npm
✔ Successfully created the workspace: awesome-project.
|
… переходим во вновь созданный проект:
… добавляем необходимые Nx-зависимости:
1
| npm i -D @nx/angular @nx/nest @nx/js
|
… затем генерируем в workspace фронтенд на angular - @nx/angular:
1
| nx g @nx/angular:app frontend-part
|
… затем генерируем бекенд на nestjs - @nx/nest:
1
| nx g @nx/nest:app backend-part
|
… генерируем shared library @nx/js:library:
1
| nx g @nx/js:lib shared-lib
|
С этого момента у нас есть базовая настройка. Мы можете импортировать общую библиотеку следующим образом::
1
| import { sharedLib } from "@my-project/shared-lib";
|
Если в дальнейшем в проекте планируется использовать Prisma и PostgreSQL, то по дальнейшим шагам можно ознакомиться здесь - Prisma - установка в Nest-проекте.
Дополнительные источники
В процессе общения по текущей теме в Discord (Nx-форум) c пользователем @rujorgensen последний любезно предложил свой вариант готового решения - nx-workspace.
Можно сделать fork репозитория - и попробовать использовать его, как вариант.
Проверка первоначального решения
Как проверка работоспособности первоначального решения - привожу ссылку на учебный проект Task Manager.
На момент написания статьи - проект находится в стадии разработки.