mirror of
https://github.com/duckietm/Nitro-V3.git
synced 2026-06-19 15:06:20 +00:00
feat: interactive JSON / JSON5 mode selector at build time
Lets the operator pick between strict JSON (legacy) and JSON5 for every configuration file consumed by Nitro and the renderer. - scripts/configure-json.mjs: interactive prompt (JSON5 recommended), with --if-missing and --non-interactive flags for CI use - package.json: yarn configure / prestart / prebuild hooks - vite.config.mjs: reads .nitro-build.json (or NITRO_JSON_MODE env) and injects the compile-time constant __NITRO_JSON_MODE__ via define - src/bootstrap.ts: routes client-mode.json parsing through the selected mode - .gitignore: ignore the per-deployment .nitro-build.json - README: full usage and override section - public/configuration assets regenerated by the updated prebuild flow The renderer side (@nitrots/utils JsonParser) is updated in the companion Nitro_Render_V3 commit on the dev branch.
This commit is contained in:
+27
-1
@@ -1,5 +1,5 @@
|
||||
import react from '@vitejs/plugin-react';
|
||||
import { existsSync } from 'fs';
|
||||
import { existsSync, readFileSync } from 'fs';
|
||||
import { resolve } from 'path';
|
||||
import { defineConfig } from 'vite';
|
||||
|
||||
@@ -7,9 +7,34 @@ const legacyRendererRoot = resolve(__dirname, '..', 'renderer');
|
||||
const currentRendererRoot = resolve(__dirname, '..', 'Nitro_Render_V3');
|
||||
const rendererRoot = existsSync(currentRendererRoot) ? currentRendererRoot : legacyRendererRoot;
|
||||
|
||||
const resolveJsonMode = () =>
|
||||
{
|
||||
const envOverride = process.env.NITRO_JSON_MODE;
|
||||
if(envOverride === 'legacy' || envOverride === 'json5' || envOverride === 'auto') return envOverride;
|
||||
|
||||
const configFile = resolve(__dirname, '.nitro-build.json');
|
||||
if(existsSync(configFile))
|
||||
{
|
||||
try
|
||||
{
|
||||
const parsed = JSON.parse(readFileSync(configFile, 'utf8'));
|
||||
if(parsed?.jsonMode === 'legacy' || parsed?.jsonMode === 'json5' || parsed?.jsonMode === 'auto') return parsed.jsonMode;
|
||||
}
|
||||
catch {}
|
||||
}
|
||||
|
||||
return 'auto';
|
||||
};
|
||||
|
||||
const nitroJsonMode = resolveJsonMode();
|
||||
process.stdout.write(`[vite] __NITRO_JSON_MODE__ = ${ nitroJsonMode }\n`);
|
||||
|
||||
export default defineConfig({
|
||||
base: process.env.VITE_BASE || './',
|
||||
plugins: [ react() ],
|
||||
define: {
|
||||
__NITRO_JSON_MODE__: JSON.stringify(nitroJsonMode)
|
||||
},
|
||||
server: {
|
||||
fs: {
|
||||
allow: [
|
||||
@@ -29,6 +54,7 @@ export default defineConfig({
|
||||
alias: {
|
||||
'@': resolve(__dirname, 'src'),
|
||||
'~': resolve(__dirname, 'node_modules'),
|
||||
'@nitrots/nitro-renderer': resolve(rendererRoot, 'index.ts'),
|
||||
'@nitrots/api': resolve(rendererRoot, 'packages/api/src/index.ts'),
|
||||
'@nitrots/assets': resolve(rendererRoot, 'packages/assets/src/index.ts'),
|
||||
'@nitrots/avatar': resolve(rendererRoot, 'packages/avatar/src/index.ts'),
|
||||
|
||||
Reference in New Issue
Block a user