From f9494feefa65286a6b553bbe1632bbe930a462a0 Mon Sep 17 00:00:00 2001 From: izawartka <59137928+izawartka@users.noreply.github.com> Date: Wed, 12 Aug 2026 17:28:44 +0200 Subject: [PATCH] Add .env and package.json version support - Updated vite config to export the package.json version as env variable - Added src/helpers/envHelper.js - Updated some constants to support being set by the .env file - Renamed Constants.sceneryFiles.fetchDisable to enableBuiltIn --- .env.example | 3 +++ src/components/SceneryManager.jsx | 2 +- src/helpers/constants.js | 10 ++++++---- src/helpers/envHelper.js | 12 ++++++++++++ vite.config.mjs | 6 ++++++ 5 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 src/helpers/envHelper.js diff --git a/.env.example b/.env.example index 5319ccb..8f5ade7 100644 --- a/.env.example +++ b/.env.example @@ -1,2 +1,5 @@ # please create .env.dev and .env.prod based on this file VITE_BASE=/ +VITE_DO_LOG_SCENERY=true +VITE_DO_ENABLE_BUILTIN_SCENERIES=false +VITE_DO_SHOW_BACK_MASEUKO=false diff --git a/src/components/SceneryManager.jsx b/src/components/SceneryManager.jsx index a10a243..f6106c4 100644 --- a/src/components/SceneryManager.jsx +++ b/src/components/SceneryManager.jsx @@ -166,7 +166,7 @@ export default function SceneryManager(props) { }, [setScenery]); useEffect(() => { - if(Constants.sceneryFiles.fetchDisable) return; + if(!Constants.sceneryFiles.enableBuiltIn) return; updateSceneryList(); }, [updateSceneryList]); diff --git a/src/helpers/constants.js b/src/helpers/constants.js index 279a9d8..df7f06e 100644 --- a/src/helpers/constants.js +++ b/src/helpers/constants.js @@ -1,6 +1,8 @@ +import { readEnvBool, readEnvString} from './envHelper'; + const Constants = { - buildVersion: '1.7.2', - showBackMaseuko: false, + buildVersion: readEnvString('VITE_APP_VERSION') ?? 'unknown', + showBackMaseuko: readEnvBool('VITE_DO_SHOW_BACK_MASEUKO') ?? false, map: { zoomSensitivity: 0.002, zoomMin: 0.03, @@ -15,7 +17,7 @@ const Constants = { mapZoomObjectDetailsThreshold: 0.5 }, parser: { - logSceneryAfterFinished: true, + logSceneryAfterFinished: readEnvBool('VITE_DO_LOG_SCENERY') ?? false, sceneryInfoVersionMin: 29, sceneryInfoVersionMax: 30, alwaysShowLogDialog: false, @@ -73,7 +75,7 @@ const Constants = { invalidSceneryInfo: true }, sceneryFiles: { - fetchDisable: true, + enableBuiltIn: readEnvBool('VITE_DO_ENABLE_BUILTIN_SCENERIES') ?? false, fetchBaseUrl: `${import.meta.env.BASE_URL}sceneries/`, fetchListUrl: `${import.meta.env.BASE_URL}sceneries/sceneries.json`, }, diff --git a/src/helpers/envHelper.js b/src/helpers/envHelper.js new file mode 100644 index 0000000..4a1f869 --- /dev/null +++ b/src/helpers/envHelper.js @@ -0,0 +1,12 @@ +export const readEnvString = (key) => { + return import.meta.env[key]; +}; + +export const readEnvBool = (key) => { + const value = import.meta.env[key]; + switch(value) { + case "true": return true; + case "false": return false; + default: return null; + } +}; diff --git a/vite.config.mjs b/vite.config.mjs index c578a84..73fddce 100644 --- a/vite.config.mjs +++ b/vite.config.mjs @@ -1,5 +1,8 @@ import { defineConfig, loadEnv } from 'vite'; import react from '@vitejs/plugin-react'; +import fs from 'fs'; + +const packageJson = JSON.parse(fs.readFileSync('./package.json', 'utf-8')); export default defineConfig(({ mode }) => { const env = loadEnv(mode, process.cwd(), ''); @@ -9,6 +12,9 @@ export default defineConfig(({ mode }) => { plugins: [ react(), ], + define: { + 'import.meta.env.VITE_APP_VERSION': JSON.stringify(packageJson.version), + }, build: { target: 'es2015', },