[Question] Why ionic serve slowly

Hello everyone, I’m from Vietnam. There is an issue today, hope someone can help.
I upgraded Ionic v5, Angular v12. Very slow build time.
I used cli:

  • ionic server
  • ionic serve – --hrm
    But they are all very slow.

This is package.json, hope you guys can see and support. Thanks everyone.

{
  "name": "ukb-attendance",
  "version": "1.0.0",
  "author": "TranQuoc",
  "homepage": "https://fb.com/tranquocbn/",
  "description": "An Ionic project",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e",
    "devtool": "eval-source-map"
  },
  "private": true,
  "dependencies": {
    "@angular/common": "^12.0.4",
    "@angular/core": "^12.0.4",
    "@angular/forms": "^12.0.4",
    "@angular/platform-browser": "^12.0.4",
    "@angular/platform-browser-dynamic": "^12.0.4",
    "@angular/router": "^12.0.4",
    "@capacitor/android": "^3.0.1",
    "@capacitor/core": "^3.0.1",
    "@capacitor/geolocation": "^1.0.1",
    "@ionic-native/core": "^5.33.1",
    "@ionic-native/geofence": "^5.33.1",
    "@ionic-native/pdf-generator": "^5.33.1",
    "@ionic-native/qr-scanner": "^5.33.1",
    "@ionic-native/splash-screen": "^5.33.1",
    "@ionic/angular": "^5.6.9",
    "@ionic/storage": "^3.0.4",
    "@ionic/storage-angular": "^3.0.6",
    "@techiediaries/ngx-qrcode": "^9.1.0",
    "cordova-pdf-generator": "^2.1.1",
    "cordova-plugin-geofence": "^0.7.0",
    "cordova-plugin-qrscanner": "^3.0.1",
    "cordova-plugin-splashscreen": "^6.0.0",
    "rxjs": "~6.6.0",
    "tslib": "^2.0.0",
    "zone.js": "~0.11.4"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "^12.0.4",
    "@angular-eslint/builder": "2.0.2",
    "@angular-eslint/eslint-plugin": "2.0.2",
    "@angular-eslint/eslint-plugin-template": "2.0.2",
    "@angular-eslint/template-parser": "2.0.2",
    "@angular/cli": "^12.0.4",
    "@angular/compiler": "^12.0.4",
    "@angular/compiler-cli": "^12.0.4",
    "@angular/language-service": "^12.0.4",
    "@capacitor/cli": "^3.0.1",
    "@ionic/angular-toolkit": "^4.0.0",
    "@types/jasmine": "^3.7.7",
    "@types/jasminewd2": "^2.0.9",
    "@types/node": "^12.20.15",
    "@typescript-eslint/eslint-plugin": "4.16.1",
    "@typescript-eslint/parser": "4.16.1",
    "critters": "0.0.10",
    "eslint": "^7.28.0",
    "eslint-plugin-import": "2.22.1",
    "eslint-plugin-jsdoc": "30.7.6",
    "eslint-plugin-prefer-arrow": "1.2.2",
    "jasmine-core": "~3.6.0",
    "jasmine-spec-reporter": "~5.0.0",
    "karma": "^6.3.4",
    "karma-chrome-launcher": "~3.1.0",
    "karma-coverage": "~2.0.3",
    "karma-coverage-istanbul-reporter": "~3.0.2",
    "karma-jasmine": "~4.0.0",
    "karma-jasmine-html-reporter": "^1.6.0",
    "protractor": "~7.0.0",
    "ts-node": "~8.3.0",
    "typescript": "~4.2.4"
  }
}

Update angular.json

{
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "version": 1,
  "defaultProject": "app",
  "newProjectRoot": "projects",
  "projects": {
    "app": {
      "root": "",
      "sourceRoot": "src",
      "projectType": "application",
      "prefix": "attendance",
      "schematics": {},
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "allowedCommonJsDependencies": [
              "angularx-qrcode",
              "qrcode"
           ],
            "outputPath": "www",
            "index": "src/index.html",
            "main": "src/main.ts",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "tsconfig.app.json",
            "assets": [
              {
                "glob": "**/*",
                "input": "src/assets",
                "output": "assets"
              },
              {
                "glob": "**/*.svg",
                "input": "node_modules/ionicons/dist/ionicons/svg",
                "output": "./svg"
              }
            ],
            "styles": ["src/theme/variables.scss", "src/global.scss"],
            "scripts": []
          },
          "configurations": {
            "production": {
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts",
                  "with": "src/environments/environment.prod.ts"
                }
              ],
              "optimization": true,
              "outputHashing": "all",
              "sourceMap": false,
              "namedChunks": false,
              "aot": true,
              "extractLicenses": true,
              "vendorChunk": false,
              "buildOptimizer": true,
              "budgets": [
                {
                  "type": "initial",
                  "maximumWarning": "500KB",
                  "maximumError": "800KB"
                }
              ]
            },
            "ci": {
              "progress": false
            },
            "development": {}
          },
          "defaultConfiguration": "production"
        },
        "serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
            "browserTarget": "app:build:development"
          },
          "configurations": {
            "sourceMap": true,
            "namedChunks": true,
            "production": {
              "browserTarget": "app:build:production"
            },
            "ci": {
              "progress": false
            },
            "development": {
              "browserTarget": "app:build:development"
            }
          },
          "defaultConfiguration": "development"
        },
        "extract-i18n": {
          "builder": "@angular-devkit/build-angular:extract-i18n",
          "options": {
            "browserTarget": "app:build"
          }
        },
        "test": {
          "builder": "@angular-devkit/build-angular:karma",
          "options": {
            "main": "src/test.ts",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "tsconfig.spec.json",
            "karmaConfig": "karma.conf.js",
            "styles": [],
            "scripts": [],
            "assets": [
              {
                "glob": "favicon.ico",
                "input": "src/",
                "output": "/"
              },
              {
                "glob": "**/*",
                "input": "src/assets",
                "output": "/assets"
              }
            ]
          },
          "configurations": {
            "ci": {
              "progress": false,
              "watch": false
            }
          }
        },
        "lint": {
          "builder": "@angular-eslint/builder:lint",
          "options": {
            "lintFilePatterns": [
              "src/**/*.ts",
              "src/**/*.html"
            ]
          }
        },
        "e2e": {
          "builder": "@angular-devkit/build-angular:protractor",
          "options": {
            "protractorConfig": "e2e/protractor.conf.js",
            "devServerTarget": "app:serve:development"
          },
          "configurations": {
            "sourceMap": true,
            "namedChunks": true,
            "production": {
              "devServerTarget": "app:serve:production"
            },
            "ci": {
              "devServerTarget": "app:serve:ci"
            },
            "development": {
              "devServerTarget": "app:serve:development"
            }
          },
          "defaultConfiguration": "development"
        },
        "ionic-cordova-build": {
          "builder": "@ionic/angular-toolkit:cordova-build",
          "options": {
            "browserTarget": "app:build"
          },
          "configurations": {
            "sourceMap": true,
            "namedChunks": true,
            "production": {
              "browserTarget": "app:build:production"
            }
          }
        },
        "ionic-cordova-serve": {
          "builder": "@ionic/angular-toolkit:cordova-serve",
          "options": {
            "cordovaBuildTarget": "app:ionic-cordova-build",
            "devServerTarget": "app:serve"
          },
          "configurations": {
            "production": {
              "cordovaBuildTarget": "app:ionic-cordova-build:production",
              "devServerTarget": "app:serve:production"
            }
          }
        }
      }
    }
  },
  "cli": {
    "defaultCollection": "@ionic/angular-toolkit"
  },
  "schematics": {
    "@ionic/angular-toolkit:component": {
      "styleext": "scss"
    },
    "@ionic/angular-toolkit:page": {
      "styleext": "scss"
    }
  }
}