setup nconf correctly for client build

This commit is contained in:
Phillip Thelen
2025-02-04 11:21:08 +01:00
parent 3a457f69a9
commit e7616cae8d
4 changed files with 31 additions and 30 deletions
-1
View File
@@ -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",
+26 -24
View File
@@ -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': {
+1 -1
View File
@@ -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();
+4 -4
View File
@@ -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');
};
}