feat: enhance environment configuration with multiple setups and update documentation

This commit is contained in:
waseem khadri
2026-07-09 11:08:54 +05:30
parent cdf4125a24
commit b9d2e1fee6
6 changed files with 205 additions and 8 deletions
+11
View File
@@ -1 +1,12 @@
# Default environment file - DO NOT commit sensitive data
# Use environment-specific files instead:
# - .env.local (Local Development)
# - .env.dev (Development Server)
# - .env.test (Test/QA Environment)
# - .env.uat (UAT Environment)
#
# Run with: npm run dev:local | npm run dev:dev | npm run dev:test | npm run dev:uat
VITE_API_URL=http://localhost:3001/api
VITE_ENV=local
VITE_APP_NAME=AeroResolve
+5
View File
@@ -0,0 +1,5 @@
# Example environment configuration
# Copy this file to .env.local, .env.dev, .env.test, or .env.uat and update values
VITE_API_URL=http://localhost:3001/api
VITE_ENV=local
+7
View File
@@ -12,6 +12,13 @@ dist
dist-ssr
*.local
# Environment files - keep .env.example in repo, ignore specific env files
.env
.env.local
.env.dev
.env.test
.env.uat
# Editor directories and files
.vscode/*
!.vscode/extensions.json
+137
View File
@@ -0,0 +1,137 @@
# Environment Configuration Guide
This project supports multiple environment configurations for local development, development server, testing, and UAT environments.
## Environment Files
- `.env.example` - Template file with all available environment variables
- `.env.local` - Local development environment (default)
- `.env.dev` - Development server environment
- `.env.test` - Test/QA environment
- `.env.uat` - User Acceptance Testing environment
## Setup Instructions
1. **Copy the example file to create your environment file:**
```bash
cp .env.example .env.local
```
2. **Update the API URLs and configuration in your chosen environment file** with actual server URLs.
3. **Commit only `.env.example` to version control** - all `.env.*` files are gitignored.
## Running the Application
### Development Servers (Local)
- **Local Development (Port 5174):**
```bash
npm run dev:local
```
or simply:
```bash
npm run dev
```
- **Dev Environment (Port 5174):**
```bash
npm run dev:dev
```
- **Test Environment (Port 5175):**
```bash
npm run dev:test
```
- **UAT Environment (Port 5176):**
```bash
npm run dev:uat
```
### Building for Production
- **Build for Local:**
```bash
npm run build:local
```
- **Build for Dev:**
```bash
npm run build:dev
```
- **Build for Test:**
```bash
npm run build:test
```
- **Build for UAT:**
```bash
npm run build:uat
```
### Preview Production Build
- **Preview Local Build:**
```bash
npm run preview:local
```
- **Preview Dev Build:**
```bash
npm run preview:dev
```
- **Preview Test Build:**
```bash
npm run preview:test
```
- **Preview UAT Build:**
```bash
npm run preview:uat
```
## Environment Variables
Each environment file contains these variables:
- `VITE_API_URL` - Backend API endpoint URL
- `VITE_ENV` - Environment name (local, dev, test, uat)
- `VITE_APP_NAME` - Application name/title
You can add more variables as needed. They should be prefixed with `VITE_` to be accessible in the browser.
## Accessing Environment Variables in Code
Access environment variables in your React components:
```typescript
const apiUrl = import.meta.env.VITE_API_URL
const environment = import.meta.env.VITE_ENV
const appName = import.meta.env.VITE_APP_NAME
```
Example in ApiClient.ts:
```typescript
const baseURL = import.meta.env.VITE_API_URL
```
## Development Ports
Each environment runs on a different port to allow running multiple instances:
| Environment | Port |
|------------|-------|
| Local | 5174 |
| Dev | 5174 |
| Test | 5175 |
| UAT | 5176 |
## Notes
- All environment files except `.env.example` are gitignored
- Never commit sensitive API keys or credentials to version control
- Use `.env.example` as a template for new environment setup
- Vite automatically loads the correct `.env.*` file based on the mode flag
+13 -1
View File
@@ -5,9 +5,21 @@
"type": "module",
"scripts": {
"dev": "vite",
"dev:local": "vite --mode local",
"dev:dev": "vite --mode dev",
"dev:test": "vite --mode test",
"dev:uat": "vite --mode uat",
"build": "tsc -b && vite build",
"build:local": "tsc -b && vite build --mode local",
"build:dev": "tsc -b && vite build --mode dev",
"build:test": "tsc -b && vite build --mode test",
"build:uat": "tsc -b && vite build --mode uat",
"lint": "eslint .",
"preview": "vite preview"
"preview": "vite preview",
"preview:local": "vite preview --mode local",
"preview:dev": "vite preview --mode dev",
"preview:test": "vite preview --mode test",
"preview:uat": "vite preview --mode uat"
},
"dependencies": {
"@tailwindcss/vite": "^4.3.0",
+32 -7
View File
@@ -3,12 +3,37 @@ import react from '@vitejs/plugin-react'
import tailwindcss from '@tailwindcss/vite'
// https://vite.dev/config/
export default defineConfig({
plugins: [
react(),
tailwindcss()
],
server: {
port: 5174,
export default defineConfig(({ mode }) => {
// Environment-specific configuration
const envConfig = {
local: {
port: 5174,
strictPort: false,
},
dev: {
port: 9501,
strictPort: false,
},
test: {
port: 9502,
strictPort: false,
},
uat: {
port: 5176,
strictPort: false,
},
}
const serverConfig = envConfig[mode as keyof typeof envConfig] || envConfig.local
return {
plugins: [
react(),
tailwindcss()
],
server: serverConfig,
define: {
__APP_ENV__: JSON.stringify(mode),
},
}
})