In this guide, we will show you how to create and organize multiple apps in one Project or Workspace. The Angular CLI since version 6 allows us to create a multi-project workspace to manage multiple Angular apps. We do that first by creating an empty workspace. A Workspace is a collection of Angular apps, projects, or libraries. Later we can add multiple projects to the workspace.
There are several advantages of having Multiple Angular Apps in One Project.
We create a new app using the ng new <new> Angular CLI command. It creates and workspace with an initial Angular app with the name <new> in the src folder. The createApplication="false" option introduced in Angular 7 now stops the creation of the initial app. It only creates the workspace
ng new MultipleApps --create-application="false"
cd MultipleApps
The above command creates a folder with the name MultipleApps and configures the workspace. It does not create any apps.
Now, to create a new app under the workspace, we need to use the ng generate application command The first app created is marked as the default app.
ng generate application gettingStarted
If you use the ng new inside the workspace, it will throw the following error.
The new command requires to be run outside of a project, but a project definition was found at “D:\MultipleApps\angular.json”
There are three ways in which you can run the app.
To create another app, run the ng generate application again.
ng generate application exampleApp
And use the ng serve to run it
ng serve exampleApp
OR
ng serve --project="exampleApp"
Use ng build to build the app with --project option.
ng build --prod --project="gettingStarted"
ng build --prod --project="exampleApp"
The folder structure is similar to the Single App workspace, except for the following
The src folder is gone. Instead, we have a projects folder. Each app we create gets its folder under the projects folder.
The dist folder now has a folder for each of the new apps.
The angular.json, contains the configuration settings for the workspace. Here is the shortened version of Angular.json for the above code.
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects", <== location of the apps
"projects": {
"gettingStarted": {
//This section contains the setting for the gettingStarted project
},
"exampleApp": {
//This section contains the setting for the exampleApp project
}},
"defaultProject": "gettingStarted" <== name of the default project
}
newProjectRoot: node points to the location of the projects folder.
projects: contain a section for each app in the workspace. Each section contains configuration for the compiler.
defaultProject: The default project used, when you run the ng serve, ng build etc.
In this guide, we learned how to organize multiple apps in one single workspace/Project in Angular.