export default {
frontend: {
enabled: true,
framework: "react",
root: "src/frontend",
publicDir: "public",
publicPath: "/",
styles: {
jscss: { enabled: true },
},
dev: {
hot: true,
fastRefresh: true,
renderRefresh: "prompt",
},
build: {
target: "es2022",
minify: true,
sourcemap: false,
client: {
external: [],
externalRuntime: {},
},
vendorChunks: {
enabled: true,
packages: ["react", "react-dom", "react-dom/client"],
},
assets: {
inlineLimit: 0,
},
css: {
modules: true,
},
budgets: {
maxInitialJsBrotliBytes: 60_000,
maxRouteInitialJsBrotliBytes: 80_000,
maxAppOwnedInitialJsBrotliBytes: 40_000,
},
diagnostics: {
leakScan: true,
performanceReport: true,
},
},
deploy: {
assetBaseUrl: "https://cdn.example.com/my-app/",
crossOrigin: "anonymous",
integrity: true,
upload: {
enabled: true,
adapter: "filesystem",
targetDir: ".vext/frontend-cdn",
publicBaseUrl: "https://cdn.example.com/my-app/",
prefix: "my-app",
stateFile: ".vext/deploy/frontend-assets-state.json",
exclude: ["**/*.map"],
},
},
i18n: {
enabled: true,
defaultLocale: "en-US",
clientLoad: "current",
},
spaFallback: {
scopes: [],
},
apiClient: true,
},
};