How to specify environment via `ng build` in Angular 6 app

I have tested in an Angular 6 Project.

ng build --prod --configuration=uat doesn't seem to work as it only picks uat configuration when you run this command and ignores --prod flag and doesn't apply any optimization such as aot, minification and upglification etc.

Running ng build --prod --configuration=uat has the effect as same as only running ng build --configuration=uat. In order to apply any other configuration options we need to add them explicitly in the uat build options in angular.json

"configurations": {
        "production": {
          "fileReplacements": [
            {
              "replace": "src/environments/environment.ts",
              "with": "src/environments/environment.prod.ts"
            }
          ],
          "optimization": true,
          "outputHashing": "all",
          "sourceMap": false,
          "extractCss": true,
          "namedChunks": false,
          "aot": true,
          "extractLicenses": true,
          "vendorChunk": false,
          "buildOptimizer": true
        },
        "uat": {
          "fileReplacements": [
            {
              "replace": "src/environments/environment.ts",
              "with": "src/environments/environment.test.ts"
            }
          ],
          "optimization": true,
          "outputHashing": "all",
          "sourceMap": false,
          "extractCss": true,
          "namedChunks": false,
          "aot": true,
          "extractLicenses": true,
          "vendorChunk": false,
          "buildOptimizer": true
        }
      }
    }

you can try to use:

ng build --configuration=uat

One needs to use the configuration option

ng build --prod --configuration=uat

or

ng build --prod -c uat

More information here

Also for ng serve same option as answered here