Angular Environment Configuration: จัดการ Config หลาย Environment

#angular12 เม.ย. 2569

ทำไมต้องมี Environment Config

ในการพัฒนา app จริง เรามักมีหลาย environment เช่น development, staging, production ซึ่งแต่ละอันมี API URL และ config ต่างกัน

โครงสร้างไฟล์

src/
  environments/
    environment.ts          # development
    environment.staging.ts  # staging
    environment.prod.ts     # production

สร้าง Environment Files

// environment.ts
export const environment = {
  production: false,
  apiUrl: 'http://localhost:3000/api',
  appName: 'MyApp (Dev)',
  logLevel: 'debug'
};
// environment.prod.ts
export const environment = {
  production: true,
  apiUrl: 'https://api.myapp.com',
  appName: 'MyApp',
  logLevel: 'error'
};

ตั้งค่าใน angular.json

"configurations": {
  "production": {
    "fileReplacements": [
      {
        "replace": "src/environments/environment.ts",
        "with": "src/environments/environment.prod.ts"
      }
    ]
  }
}

ใช้งาน

import { environment } from '../environments/environment';

@Injectable({ providedIn: 'root' })
export class ApiService {
  private baseUrl = environment.apiUrl;

  getUsers() {
    return this.http.get(`${this.baseUrl}/users`);
  }
}

Build แต่ละ Environment

ng build                    # development
ng build --configuration=production  # production
ng build --configuration=staging     # staging

Cloudflare Workers / Hono

ถ้าใช้ Cloudflare Workers ให้ใช้ c.env แทน environment file

const apiUrl = c.env.API_URL;

สรุป

การแยก environment config ช่วยให้ deploy ได้ง่ายและปลอดภัย ไม่ต้องแก้โค้ดทุกครั้งที่ deploy ครับ