{"id":15508360,"url":"https://github.com/tinesoft/nx-multi-stacks-monorepo","last_synced_at":"2026-01-21T05:41:11.391Z","repository":{"id":212346930,"uuid":"730898480","full_name":"tinesoft/nx-multi-stacks-monorepo","owner":"tinesoft","description":"Companion project for Sfeir School Nx","archived":false,"fork":false,"pushed_at":"2024-10-03T15:29:40.000Z","size":826,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-11T00:14:26.416Z","etag":null,"topics":["angular","nx-workspace","react","spring-boot"],"latest_commit_sha":null,"homepage":"https://github.com/sfeir-open-source/sfeir-school-nx","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tinesoft.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-12-12T23:16:23.000Z","updated_at":"2024-06-20T05:15:42.000Z","dependencies_parsed_at":"2023-12-13T20:49:42.153Z","dependency_job_id":"e7a246a3-a6a4-42de-bdd1-dda18cd9259f","html_url":"https://github.com/tinesoft/nx-multi-stacks-monorepo","commit_stats":{"total_commits":31,"total_committers":2,"mean_commits":15.5,"dds":"0.032258064516129004","last_synced_commit":"d70b773a51c4c9bdb1184070ef217fb21dbfd320"},"previous_names":["tinesoft/nx-multi-stacks-monorepo"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinesoft%2Fnx-multi-stacks-monorepo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinesoft%2Fnx-multi-stacks-monorepo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinesoft%2Fnx-multi-stacks-monorepo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinesoft%2Fnx-multi-stacks-monorepo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tinesoft","download_url":"https://codeload.github.com/tinesoft/nx-multi-stacks-monorepo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248317730,"owners_count":21083530,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular","nx-workspace","react","spring-boot"],"created_at":"2024-10-02T09:37:54.431Z","updated_at":"2026-01-21T05:41:11.349Z","avatar_url":"https://github.com/tinesoft.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nx Multi Stacks Monorepo\n\n\u003ca alt=\"Lab Nx Multi Stack Monorepo\" href=\"https://sfeir-open-source.github.io/sfeir-school-nx\" target=\"_blank\" rel=\"noreferrer\"\u003e\n\u003cimg src=\"lab-nx-multi-stacks-monorepo.png\" width=\"1510\"\u003e\u003c/a\u003e\n\n✨ **This workspace has been generated by [Nx, a Smart, fast and extensible build system.](https://nx.dev)** ✨ for the **[Sfeir School Nx](https://github.com/sfeir-open-source/sfeir-school-nx)**\n\n## How to recreate this exact workspace?\n\n### General Instructions\n\n1. Create the workspace: `npx --yes create-nx-workspace@17.0.0 nx-multi-stacks-monorepo --preset=apps --workspaceType=integrated --nxCloud=false`\n\n2. Move into the created repo: `cd nx-multi-stacks-monorepo` and open it inside you IDE of choice\n\n3. Add `@nx/angular@17.0.0 @nx/react@17.0.0 @nxrocks/nx-spring-boot@latest` plugins as a dev dependencies: `npm install -D @nx/angular@17.0.0 @nx/react@17.0.0 @nxrocks/nx-spring-boot@latest`\n\n    \u003cdetails\u003e\n    \u003csummary\u003e\u003cb\u003e💾 Save the current state!\u003c/b\u003e\u003c/summary\u003e\n\n    \u003e ```shell\n    \u003e $ git add --all\n    \u003e $ git commit -m 'chore: add angular, react and spring-boot plugins'\n    \u003e ```\n\n    \u003c/details\u003e\n\n### Angular Stack Instructions\n\n1. Generate the **angular application**: `npx nx generate @nx/angular:application --name=ngapp --directory=frontend/apps/ngapp --routing=true --standalone=true --projectNameAndRootFormat=as-provided --style=scss --prefix=ngapp --port=1200 --backendProject=api --tags=\"type:app, type:angular, type:frontend\" --no-interactive`\n\n    \u003cdetails\u003e\n    \u003csummary\u003e\u003cb\u003e💾 Save the current state!\u003c/b\u003e\u003c/summary\u003e\n\n    \u003e ```shell\n    \u003e $ git add --all\n    \u003e $ git commit -m 'chore(ngapp): generate a basic angular application'\n    \u003e ```\n\n    \u003c/details\u003e\n\n2. Generate the **angular library**: `npx nx g @nx/angular:library --name=nglib --buildable=true --directory=frontend/libs/nglib --changeDetection=OnPush --prefix=nglib --projectNameAndRootFormat=as-provided --style=scss --tags=\"type:lib, type:angular, type:frontend\" --skipModule=true --no-interactive`\n\n    \u003cdetails\u003e\n    \u003csummary\u003e\u003cb\u003e💾 Save the current state!\u003c/b\u003e\u003c/summary\u003e\n\n    \u003e ```shell\n    \u003e $ git add --all\n    \u003e $ git commit -m 'chore(nglib): generate a basic angular library'\n    \u003e ```\n\n    \u003c/details\u003e\n\n3. Generate a `Welcome` Component inside the `nglib` above: `npx nx g @nx/angular:component --name=welcome --directory=frontend/libs/nglib/src/components --export=true --standalone=true --changeDetection=OnPush --nameAndDirectoryFormat=as-provided --prefix=nglib`\n\n    \u003cdetails\u003e\n    \u003csummary\u003e\u003cb\u003e💾 Save the current state!\u003c/b\u003e\u003c/summary\u003e\n\n    \u003e ```shell\n    \u003e $ git add --all\n    \u003e $ git commit -m 'chore(nglib): generate a basic `Welcome` component inside `nglib`'\n    \u003e ```\n\n    \u003c/details\u003e\n\n4. Update the generated `Welcome` component above and use it in `ngapp` as such:\n    * `frontend/libs/nglib/src/components/welcome.component.html` :\n\n    ```diff\n    -\u003cp\u003ewelcome works!\u003c/p\u003e\n    +\u003cdiv class=\"welcome\"\u003e\n    +    \u003cp\u003eWelcome again, from \u003cstrong\u003englib!\u003c/strong\u003e\u003c/p\u003e\n    +    \u003cp\u003eToday is: \u003cstrong\u003e{{ today | date}}\u003c/strong\u003e\u003c/p\u003e\n    +\u003c/div\u003e\n    ```\n\n    * `frontend/libs/nglib/src/components/welcome.component.scss` :\n\n    ```diff\n    +.welcome {\n    +    border-radius: 4px;\n    +    border: 2px solid red;\n    +    padding: 1rem;\n    +    margin-top: 0.5rem;\n    +    margin-bottom: 0.5rem;\n    +}\n    ```\n\n    * `frontend/libs/nglib/src/components/welcome.component.ts` :\n\n    ```diff\n    -export class WelcomeComponent {}\n    +export class WelcomeComponent {\n    +  today = new Date();\n    +}\n    ```\n\n    * `frontend/apps/ngapp/src/app/nx-welcome.component.ts` :\n\n    ```diff\n    import { Component, ViewEncapsulation } from '@angular/core';\n    import { CommonModule } from '@angular/common';\n    +import { WelcomeComponent } from '@nx-multi-stacks-monorepo/nglib';\n    \n    @Component({\n    selector: 'ngapp-nx-welcome',\n    standalone: true,\n    -  imports: [CommonModule],\n    +  imports: [CommonModule, WelcomeComponent],\n    template: `\n        \u003c!--\n          * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n    import { CommonModule } from '@angular/common';\n                \u003cspan\u003e Hello there, \u003c/span\u003e\n                Welcome ngapp 👋\n            \u003c/h1\u003e\n    +       \u003cnglib-welcome\u003e\u003c/nglib-welcome\u003e\n            \u003c/div\u003e\n            \u003c!--  HERO  --\u003e\n            \u003cdiv id=\"hero\" class=\"rounded\"\u003e\n    ```\n\n    \u003cdetails\u003e\n    \u003csummary\u003e\u003cb\u003e💾 Save the current state!\u003c/b\u003e\u003c/summary\u003e\n\n    \u003e ```shell\n    \u003e $ git add --all\n    \u003e $ git commit -m 'chore(ngapp): update `Welcome` component from `nglib` and use it in `ngapp`'\n    \u003e ```\n\n    \u003c/details\u003e\n\n### React Stack Instructions\n\n1. Generate the **react application**: `npx nx g @nx/react:application --name=reactapp --directory=frontend/apps/reactapp --projectNameAndRootFormat=as-provided --routing=true --style=scss --tags=\"type:app, type:react, type:frontend\" --no-interactive`\n    * Open `frontend/apps/reactapp/project.json` and change default port use to serve the app to `2200` (to avoid conflict with other apps):\n\n    ```diff\n    \"serve\": {\n        \"executor\": \"@nx/webpack:dev-server\",\n        \"defaultConfiguration\": \"development\",\n        \"options\": {\n            \"buildTarget\": \"reactapp:build\",\n    -        \"hmr\": true\n    +        \"hmr\": true,\n    +        \"port\": 2200\n        },\n    ```\n\n    \u003cdetails\u003e\n    \u003csummary\u003e\u003cb\u003e💾 Save the current state!\u003c/b\u003e\u003c/summary\u003e\n\n    \u003e ```shell\n    \u003e $ git add --all\n    \u003e $ git commit -m 'chore(reactapp): generate a basic react application'\n    \u003e ```\n\n    \u003c/details\u003e\n\n2. Generate the **react library**: `npx nx generate @nx/react:library --name=reactlib --unitTestRunner=jest --directory=frontend/libs/reactlib --component=false --projectNameAndRootFormat=as-provided --style=scss --tags=\"type:lib, type:react, type:frontend\" --no-interactive`\n\n    \u003cdetails\u003e\n    \u003csummary\u003e\u003cb\u003e💾 Save the current state!\u003c/b\u003e\u003c/summary\u003e\n\n    \u003e ```shell\n    \u003e $ git add --all\n    \u003e $ git commit -m 'chore(reactlib): generate a basic react library'\n    \u003e ```\n\n    \u003c/details\u003e\n\n3. Generate a `Welcome` Component inside the `reactlib` above: `npx nx g @nx/react:component --name=welcome --directory=frontend/libs/reactlib/src/components --export=true --standalone=true --changeDetection=OnPush --nameAndDirectoryFormat=as-provided --prefix=reactlib`\n\n    \u003cdetails\u003e\n    \u003csummary\u003e\u003cb\u003e💾 Save the current state!\u003c/b\u003e\u003c/summary\u003e\n\n    \u003e ```shell\n    \u003e $ git add --all\n    \u003e $ git commit -m 'chore(reactlib): generate a basic `Welcome` component inside `reactlib`'\n    \u003e ```\n\n    \u003c/details\u003e\n\n4. Update the generated `Welcome` component above and use it in `reactapp` as such:\n    * `frontend/libs/reactlib/src/components/welcome.tsx` :\n\n    ```diff\n    export interface WelcomeProps {}\n    \n    export function Welcome(props: WelcomeProps) {\n    +  const today = new Date().toDateString();\n    return (\n    -    \u003cdiv className={styles['container']}\u003e\n    -      \u003ch1\u003eWelcome to Welcome!\u003c/h1\u003e\n    +    \u003cdiv className={styles['welcome']}\u003e\n    +      \u003ch1\u003eWelcome again, from \u003cstrong\u003ereactlib!\u003c/strong\u003e\u003c/h1\u003e\n    +      \u003cp\u003eToday is: \u003cstrong\u003e{today}\u003c/strong\u003e\u003c/p\u003e\n        \u003c/div\u003e\n    );\n    }\n    ```\n\n    * `frontend/libs/reactlib/src/components/welcome.module.scss` :\n\n    ```diff\n    -/*\n    - * Replace this with your own classes\n    - *\n    - * e.g.\n    - * .container {\n    - * }\n    -*/\n    +.welcome {\n    +    border-radius: 4px;\n    +    border: 2px solid red;\n    +    padding: 1rem;\n    +    margin-top: 0.5rem;\n    +    margin-bottom: 0.5rem;\n    +}\n    ```\n\n    * `frontend/apps/reactapp/src/app/nx-welcome.tsx` :\n\n    ```diff\n    -/*\n    - * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n    - This is a starter component and can be deleted.\n    - * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n    - Delete this file and get started with your project!\n    - * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n    - */\n    +import { Welcome } from \"@nx-multi-stacks-monorepo/reactlib\";\n    +\n    export function NxWelcome({ title }: { title: string }) {\n    return (\n        \u003c\u003e\n    export function NxWelcome({ title }: { title: string }) {\n                Welcome {title} 👋\n                \u003c/h1\u003e\n            \u003c/div\u003e\n    -\n    +       \u003cWelcome/\u003e\n            \u003cdiv id=\"hero\" className=\"rounded\"\u003e\n                \u003cdiv className=\"text-container\"\u003e\n                \u003ch2\u003e\n    ```\n\n    \u003cdetails\u003e\n    \u003csummary\u003e\u003cb\u003e💾 Save the current state!\u003c/b\u003e\u003c/summary\u003e\n\n    \u003e ```shell\n    \u003e $ git add --all\n    \u003e $ git commit -m 'chore(reactapp): update `Welcome` component from `reaclib` and use it in `reactapp`'\n    \u003e ```\n\n    \u003c/details\u003e\n\n### Common JS/TS Stack Instructions\n\n1. Generate the **common js/ts library**: `npx nx generate @nx/js:library --name=commonlib --unitTestRunner=jest --directory=frontend/libs/commonlib --projectNameAndRootFormat=as-provided --tags=\"type:lib, type:js, type:frontend\" --no-interactive`\n\n    \u003cdetails\u003e\n    \u003csummary\u003e\u003cb\u003e💾 Save the current state!\u003c/b\u003e\u003c/summary\u003e\n\n    \u003e ```shell\n    \u003e $ git add --all\n    \u003e $ git commit -m 'chore(commonlib): generate a basic JS/TS library'\n    \u003e ```\n\n    \u003c/details\u003e\n\n2. Update the generated `commonlib` file above  (by adding a `getTodayDate()` util) and use it in `nglib` and `reactlib` as such:\n    * `frontend/libs/commonlib/src/lib/commonlib.ts` :\n\n    ```diff\n    export function commonlib(): string {\n    return 'commonlib';\n    }\n    +\n    +export function getTodayDate(){\n    +  return new Date();\n    +}\n    ```\n\n    * `frontend/libs/nglib/src/components/welcome.component.ts` :\n\n    ```diff\n    import { ChangeDetectionStrategy, Component } from '@angular/core';\n    import { CommonModule } from '@angular/common';\n    +import { getTodayDate } from '@nx-multi-stacks-monorepo/commonlib';\n    \n    @Component({\n    selector: 'nglib-welcome',\n    import { CommonModule } from '@angular/common';\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    })\n    export class WelcomeComponent {\n    -  today = new Date();\n    +  today = getTodayDate();\n    }\n    ```\n\n    * `frontend/libs/reactlib/src/components/welcome.tsx`:\n\n    ```diff\n    +import { getTodayDate } from '@nx-multi-stacks-monorepo/commonlib';\n    import styles from './welcome.module.scss';\n    \n    /* eslint-disable-next-line */\n    export interface WelcomeProps {}\n    \n    export function Welcome(props: WelcomeProps) {\n    -  const today = new Date().toDateString();\n    +  const today = getTodayDate().toDateString();\n    return (\n        \u003cdiv className={styles['welcome']}\u003e\n        \u003ch1\u003eWelcome again, from \u003cstrong\u003ereactlib!\u003c/strong\u003e\u003c/h1\u003e\n    ```\n\n    \u003cdetails\u003e\n    \u003csummary\u003e\u003cb\u003e💾 Save the current state!\u003c/b\u003e\u003c/summary\u003e\n\n    \u003e ```shell\n    \u003e $ git add --all\n    \u003e $ git commit -m 'chore(frontend): update `nglib` and `reactlib` to use utils from `commonlib`'\n    \u003e ```\n\n    \u003c/details\u003e\n\n### Spring Boot Stack Instructions\n\n1. Generate the **Spring Boot application** inside a parent module `boot-parent`: `npx nx g @nxrocks/nx-spring-boot:project --name=bootapp --dependencies=\"web,jpa,h2,actuator,devtools\" --artifactId=bootapp --directory=backend/bootapp --packageName=com.example.bootapp --keepProjectLevelWrapper=false --parentModuleName=boot-parent --transformIntoMultiModule=true --tags=\"type:api, type:java, type:backend\" --projectNameAndRootFormat=as-provided --no-interactive`\n\n    \u003cdetails\u003e\n    \u003csummary\u003e\u003cb\u003e💾 Save the current state!\u003c/b\u003e\u003c/summary\u003e\n\n    \u003e ```shell\n    \u003e $ git add --all\n    \u003e $ git commit -m 'chore(bootapp): generate a spring boot application inside a parent module'\n    \u003e ```\n\n    \u003c/details\u003e\n\n2. Create a `WelcomeController.java` file in `backend/boot-parent/bootapp/src/main/java/com/example/bootapp/controller/` with content:\n\n    ```java\n    package com.example.bootapp.controller;\n\n    import org.springframework.web.bind.annotation.GetMapping;\n    import org.springframework.web.bind.annotation.RequestParam;\n    import org.springframework.web.bind.annotation.RestController;\n\n    @RestController(\"/api\")\n    public class WelcomeController {\n    \n        private static final String WELCOME_TEMPLATE = \"Welcome, %s, from '%s'!\";\n        public static record WelcomeMessage(String user, String message) { }\n\n        @GetMapping(\"/welcome\")\n        public WelcomeMessage welcome(@RequestParam(value = \"user\", defaultValue = \"Sfeir School Nx Attendee\") String user) {\n            return new WelcomeMessage(user, String.format(WELCOME_TEMPLATE, user, \"bootapp\"));\n        }\n    }\n    ```\n\n    \u003cdetails\u003e\n    \u003csummary\u003e\u003cb\u003e💾 Save the current state!\u003c/b\u003e\u003c/summary\u003e\n\n    \u003e ```shell\n    \u003e $ git add --all\n    \u003e $ git commit -m 'chore(bootapp): add a `Welcome` REST controller inside `bootapp`'\n    \u003e ```\n\n    \u003c/details\u003e\n\n3. Generate the **Spring Boot library** inside the `boot-parent` module: `npx nx generate @nxrocks/nx-spring-boot:project --name=bootlib --projectType=library --artifactId=bootlib --directory=backend/bootlib --packageName=com.example.bootlib --addToExistingParentModule=true --keepProjectLevelWrapper=false --parentModuleName=boot-parent --tags=\"type:api, type:java, type:backend\" --projectNameAndRootFormat=as-provided --no-interactive`\n\n    \u003cdetails\u003e\n    \u003csummary\u003e\u003cb\u003e💾 Save the current state!\u003c/b\u003e\u003c/summary\u003e\n\n    \u003e ```shell\n    \u003e $ git add --all\n    \u003e $ git commit -m 'chore(bootlib): generate a spring boot library inside a parent module'\n    \u003e ```\n\n    \u003c/details\u003e\n\n\n4. Update the generated `bootapp` application to use the `bootlib` :\n    * Open `backend/boot-parent/bootapp/pom.xml` and update it as such (to use the `bootlib` library from above):\n\n    ```diff\n\t\t\u003c/dependency\u003e\n\t+\t\u003cdependency\u003e\n\t+\t\t\u003cgroupId\u003ecom.example\u003c/groupId\u003e\n\t+\t\t\u003cartifactId\u003ebootlib\u003c/artifactId\u003e\n\t+\t\t\u003cversion\u003e${project.version}\u003c/version\u003e\n\t+\t\u003c/dependency\u003e\n\t+\u003c/dependencies\u003e\n    ```\n\n    * Open `backend/boot-parent/bootapp/src/main/java/com/example/bootapp/controller/WelcomeController.java` and update it as such (to use the `MyService` from the `bootlib`) :\n\n    ```diff\n    package com.example.bootapp.controller;\n\n    import org.springframework.web.bind.annotation.GetMapping;\n    import org.springframework.web.bind.annotation.RequestParam;\n    import org.springframework.web.bind.annotation.RestController;\n    +import com.example.bootlib.service.MyService;\n\n    @RestController(\"/api\")\n    public class WelcomeController {\n\n        private static final String WELCOME_TEMPLATE = \"Welcome, %s, from '%s'!\";\n        public static record WelcomeMessage(String user, String message) { }\n\n    +   private final MyService myService;\n\n    +   public WelcomeController(MyService myService) {\n    +       this.myService = myService;\n    +   }\n\n        @GetMapping(\"/welcome\")\n        public WelcomeMessage welcome(@RequestParam(value = \"user\", defaultValue = \"Sfeir School Nx Attendee\") String user) {\n    -        return new WelcomeMessage(user, String.format(WELCOME_TEMPLATE, user, \"bootapp\"));\n    +        return new WelcomeMessage(user, String.format(WELCOME_TEMPLATE, user, this.myService.message()));\n        }\n    }\n    ```\n\n    * Open `backend/boot-parent/bootapp/src/main/resources/application.properties` and update it as such (to define the property from the `bootlib` library from above):\n\n    ```diff\n    +bootlib.service.message = bootlib\n    ```\n\n    * Open `backend/boot-parent/bootapp/src/main/java/com/example/bootapp/BootappApplication.java` and update it as such (to include beans from `com.example` package, common to both `bootapp` and `bootlib`):\n\n    ```diff\n    -@SpringBootApplication\n    +@SpringBootApplication(scanBasePackages = \"com.example\")\n    public class BootappApplication {\n    ```\n\n    \u003cdetails\u003e\n    \u003csummary\u003e\u003cb\u003e💾 Save the current state!\u003c/b\u003e\u003c/summary\u003e\n\n    \u003e ```shell\n    \u003e $ git add --all\n    \u003e $ git commit -m 'chore(bootapp): update the `bootapp` to use the `bootlib`'\n    \u003e ```\n\n    \u003c/details\u003e\n\n### Link Angular and Spring Boot Stacks\n\n1. Add an **implicit** link between the backend **Spring Boot application** (`bootapp`) and the frontend **Angular application** (`ngapp`) that uses its API: `npx nx g @nxrocks/nx-spring-boot:link --sourceProjectName=bootapp --targetProjectName=ngapp --no-interactive`\n\n## Visualize the workspace\n\nRun `nx graph` to visualize this workspace\n\n## Generate code\n\nIf you happen to use Nx plugins, you can leverage code generators that might come with it.\n\nRun `nx list` to get a list of available plugins and whether they have generators. Then run `nx list \u003cplugin-name\u003e` to see what generators are available.\n\nLearn more about [Nx generators on the docs](https://nx.dev/plugin-features/use-code-generators).\n\n## Running tasks\n\nTo execute tasks with Nx use the following syntax:\n\n```\nnx \u003ctarget\u003e \u003cproject\u003e \u003c...options\u003e\n```\n\nYou can also run multiple targets:\n\n```\nnx run-many -t \u003ctarget1\u003e \u003ctarget2\u003e\n```\n\n..or add `-p` to filter specific projects\n\n```\nnx run-many -t \u003ctarget1\u003e \u003ctarget2\u003e -p \u003cproj1\u003e \u003cproj2\u003e\n```\n\nTargets can be defined in the `package.json` or `projects.json`. Learn more [in the docs](https://nx.dev/core-features/run-tasks).\n\n## Want better Editor Integration?\n\nHave a look at the [Nx Console extensions](https://nx.dev/nx-console). It provides autocomplete support, a UI for exploring and running tasks \u0026 generators, and more! Available for VSCode, IntelliJ and comes with a LSP for Vim users.\n\n## Ready to deploy?\n\nJust run `nx build demoapp` to build the application. The build artifacts will be stored in the `dist/` directory, ready to be deployed.\n\n## Set up CI!\n\nNx comes with local caching already built-in (check your `nx.json`). On CI you might want to go a step further.\n\n- [Set up remote caching](https://nx.dev/core-features/share-your-cache)\n- [Set up task distribution across multiple machines](https://nx.dev/core-features/distribute-task-execution)\n- [Learn more how to setup CI](https://nx.dev/recipes/ci)\n\n## Connect with us!\n\n- [Join the community](https://nx.dev/community)\n- [Subscribe to the Nx Youtube Channel](https://www.youtube.com/@nxdevtools)\n- [Follow us on Twitter](https://twitter.com/nxdevtools)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftinesoft%2Fnx-multi-stacks-monorepo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftinesoft%2Fnx-multi-stacks-monorepo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftinesoft%2Fnx-multi-stacks-monorepo/lists"}