|
|
@@ -4,12 +4,71 @@
|
|
|
// https://v2.quasar.dev/quasar-cli-vite/quasar-config-js
|
|
|
|
|
|
import { defineConfig } from "#q-app/wrappers";
|
|
|
+import { existsSync, readFileSync } from "node:fs";
|
|
|
+import { resolve } from "node:path";
|
|
|
import { fileURLToPath } from "node:url";
|
|
|
-import { config as loadEnv } from "dotenv";
|
|
|
|
|
|
-loadEnv();
|
|
|
+const envFiles = {
|
|
|
+ dev: ".env.app.dev",
|
|
|
+ staging: ".env.app.staging",
|
|
|
+ prod: ".env.app.prod",
|
|
|
+};
|
|
|
+
|
|
|
+const loadAppEnv = (ctx) => {
|
|
|
+ const appEnv = process.env.APP_ENV || (ctx.dev ? "dev" : "prod");
|
|
|
+ const envFile = envFiles[appEnv];
|
|
|
+
|
|
|
+ if (!envFile) {
|
|
|
+ throw new Error(`APP_ENV invalido: "${appEnv}". Use dev, staging ou prod.`);
|
|
|
+ }
|
|
|
+
|
|
|
+ const fileEnv = parseEnvFile(resolve(process.cwd(), envFile));
|
|
|
+
|
|
|
+ return {
|
|
|
+ APP_ENV: appEnv,
|
|
|
+ API_URL: fileEnv.API_URL,
|
|
|
+ PASSWORD: fileEnv.PASSWORD,
|
|
|
+ WEBSOCKET_API: fileEnv.WEBSOCKET_API,
|
|
|
+ WEBSOCKET_PATH: fileEnv.WEBSOCKET_PATH,
|
|
|
+ WEBSOCKET_ROOM: fileEnv.WEBSOCKET_ROOM,
|
|
|
+ WEBSOCKET_API_KEY: fileEnv.WEBSOCKET_API_KEY,
|
|
|
+ GOOGLE_MAPS_API_KEY: fileEnv.GOOGLE_MAPS_API_KEY,
|
|
|
+ PAGARME_PUBLIC_KEY: fileEnv.PAGARME_PUBLIC_KEY
|
|
|
+ };
|
|
|
+};
|
|
|
+
|
|
|
+const parseEnvFile = (filePath) => {
|
|
|
+ if (!existsSync(filePath)) {
|
|
|
+ return {};
|
|
|
+ }
|
|
|
+
|
|
|
+ return readFileSync(filePath, "utf8")
|
|
|
+ .split(/\r?\n/)
|
|
|
+ .reduce((env, line) => {
|
|
|
+ const trimmedLine = line.trim();
|
|
|
+
|
|
|
+ if (!trimmedLine || trimmedLine.startsWith("#")) {
|
|
|
+ return env;
|
|
|
+ }
|
|
|
+
|
|
|
+ const separatorIndex = trimmedLine.indexOf("=");
|
|
|
+
|
|
|
+ if (separatorIndex === -1) {
|
|
|
+ return env;
|
|
|
+ }
|
|
|
+
|
|
|
+ const key = trimmedLine.slice(0, separatorIndex).trim();
|
|
|
+ const value = trimmedLine.slice(separatorIndex + 1).trim();
|
|
|
+
|
|
|
+ env[key] = value.replace(/^["']|["']$/g, "");
|
|
|
+
|
|
|
+ return env;
|
|
|
+ }, {});
|
|
|
+};
|
|
|
|
|
|
export default defineConfig((ctx) => {
|
|
|
+ const appEnv = loadAppEnv(ctx);
|
|
|
+
|
|
|
return {
|
|
|
bin: {
|
|
|
linuxAndroidStudio: "/snap/bin/android-studio",
|
|
|
@@ -61,19 +120,9 @@ export default defineConfig((ctx) => {
|
|
|
|
|
|
// publicPath: '/',
|
|
|
// analyze: true,
|
|
|
- env: {
|
|
|
- API_URL: ctx.dev ? "http://localhost:3000" : "http://localhost:3000",
|
|
|
- PASSWORD: ctx.dev ? "S@ft2080." : "",
|
|
|
- WEBSOCKET_API: ctx.dev
|
|
|
- ? "http://localhost:4321/"
|
|
|
- : "http://localhost:4321/",
|
|
|
- WEBSOCKET_PATH: ctx.dev ? "/socket.io" : "/socket.io",
|
|
|
- WEBSOCKET_ROOM: ctx.dev ? "LARAVEL" : "LARAVEL",
|
|
|
- WEBSOCKET_API_KEY:
|
|
|
- "7wArC/kl0nTbt4zBu0agw.NXLyjA96I6x1XmBcuokwPqfo3/CIxzqYw.PTthh5eqa08Uf4ubFlOqatpShoz1CRRID9pZReEFvBk3il6E9u",
|
|
|
- GOOGLE_MAPS_API_KEY: process.env.GOOGLE_MAPS_API_KEY ?? "",
|
|
|
- PAGARME_PUBLIC_KEY: process.env.PAGARME_PUBLIC_KEY ?? "pk_test_1VRWkbvu43Tyk7qG",
|
|
|
- },
|
|
|
+
|
|
|
+ env: appEnv,
|
|
|
+
|
|
|
// rawDefine: {}
|
|
|
// ignorePublicFolder: true,
|
|
|
// minify: false,
|