From e7616cae8d055dfee888780aa97573ccd81490ae Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Tue, 4 Feb 2025 11:21:08 +0100 Subject: [PATCH] setup nconf correctly for client build --- website/client/package-lock.json | 1 - website/client/vite.config.mjs | 50 ++++++++++++++++--------------- website/server/index.js | 2 +- website/server/libs/setupNconf.js | 8 ++--- 4 files changed, 31 insertions(+), 30 deletions(-) diff --git a/website/client/package-lock.json b/website/client/package-lock.json index 751eabdf32..7d1fdc98c5 100644 --- a/website/client/package-lock.json +++ b/website/client/package-lock.json @@ -47,7 +47,6 @@ "@babel/plugin-proposal-optional-chaining": "^7.21.0", "@vitest/browser": "^3.0.5", "babel-plugin-lodash": "^3.3.4", - "chai": "^5.1.0", "inspectpack": "^4.7.1", "jsdom": "^26.0.0", "mocha": "^11.1.0", diff --git a/website/client/vite.config.mjs b/website/client/vite.config.mjs index 652c3c0420..420f2ba5c8 100644 --- a/website/client/vite.config.mjs +++ b/website/client/vite.config.mjs @@ -3,14 +3,13 @@ import path from 'path'; import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue2' import { fileURLToPath } from 'node:url' +import setupNconf from '../server/libs/setupNconf'; const configFile = path.join(path.resolve(__dirname, '../../config.json')); - -// TODO abstract from server -nconf.file('user', configFile) - +setupNconf(configFile, nconf); const DEV_BASE_URL = nconf.get('BASE_URL'); + const envVars = [ 'AMAZON_PAYMENTS_SELLER_ID', 'AMAZON_PAYMENTS_CLIENT_ID', @@ -18,7 +17,6 @@ const envVars = [ 'EMAILS_COMMUNITY_MANAGER_EMAIL', 'EMAILS_TECH_ASSISTANCE_EMAIL', 'EMAILS_PRESS_ENQUIRY_EMAIL', - 'BASE_URL', 'GA_ID', 'STRIPE_PUB_KEY', 'GOOGLE_CLIENT_ID', @@ -38,31 +36,35 @@ envVars .forEach(key => { envObject[`import.meta.env.${key}`] = `'${nconf.get(key)}'`; }); +if (nconf.get('BASE_URL').indexOf('//habitica.com') !== -1) { + envObject['import.meta.env.DEBUG_ENABLED'] = `false`; + envObject['import.meta.env.TIME_TRAVEL_ENABLED'] = `false`; +} // https://vitejs.dev/config/ export default defineConfig({ define: envObject, resolve: { - alias: [ - { find: '@', replacement: fileURLToPath(new URL('./src', import.meta.url)) }, - { find: '~', replacement: fileURLToPath(new URL('./node_modules', import.meta.url)) }, - ], - extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'] - }, - plugins: [ - vue() + alias: [ + { find: '@', replacement: fileURLToPath(new URL('./src', import.meta.url)) }, + { find: '~', replacement: fileURLToPath(new URL('./node_modules', import.meta.url)) }, ], - optimizeDeps: { - include: ['moment-recur'] - }, - build: { - commonjsOptions: { - include: [/moment-recur/, /node_modules/] - } - }, - base: '/', - server: { - headers: { 'Cache-Control': 'no-store' }, + extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'] + }, + plugins: [ + vue() + ], + optimizeDeps: { + include: ['moment-recur'] + }, + build: { + commonjsOptions: { + include: [/moment-recur/, /node_modules/] + } + }, + base: '/', + server: { + headers: { 'Cache-Control': 'no-store' }, proxy: { // proxy all requests to the server at IP:PORT as specified in the top-level config '^/api/v3': { diff --git a/website/server/index.js b/website/server/index.js index c1288e4b20..6434ee31a0 100644 --- a/website/server/index.js +++ b/website/server/index.js @@ -9,7 +9,7 @@ if (process.env.NODE_ENV !== 'production') { const cluster = require('cluster'); -const setupNconf = require('./libs/setupNconf'); +const setupNconf = require('./libs/setupNconf').default; // Initialize configuration BEFORE anything setupNconf(); diff --git a/website/server/libs/setupNconf.js b/website/server/libs/setupNconf.js index 073f499687..122f30230b 100644 --- a/website/server/libs/setupNconf.js +++ b/website/server/libs/setupNconf.js @@ -1,11 +1,11 @@ /* eslint-disable import/no-commonjs */ // NOTE es5 requires/exports to allow import from webpack -const nconfDefault = require('nconf'); -const { join, resolve } = require('path'); +import nconfDefault from 'nconf'; +import { join, resolve } from 'path'; const PATH_TO_CONFIG = join(resolve(__dirname, '../../../config.json')); -module.exports = function setupNconf (file, nconfInstance = nconfDefault) { +export default function setupNconf (file, nconfInstance = nconfDefault) { const configFile = file || PATH_TO_CONFIG; nconfInstance @@ -16,4 +16,4 @@ module.exports = function setupNconf (file, nconfInstance = nconfDefault) { nconfInstance.set('IS_PROD', nconfInstance.get('NODE_ENV') === 'production'); nconfInstance.set('IS_DEV', nconfInstance.get('NODE_ENV') === 'development'); nconfInstance.set('IS_TEST', nconfInstance.get('NODE_ENV') === 'test'); -}; +}