From cfe1149b7d7bcc3461381bff97e81024eee9cb14 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Wed, 11 Jun 2025 10:23:24 +0200 Subject: [PATCH] fix: pre-populate `wrangler.vars` --- modules/cloudflare-vars.ts | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 modules/cloudflare-vars.ts diff --git a/modules/cloudflare-vars.ts b/modules/cloudflare-vars.ts new file mode 100644 index 00000000..58ba0be3 --- /dev/null +++ b/modules/cloudflare-vars.ts @@ -0,0 +1,37 @@ +import { useRuntimeConfig, defineNuxtModule, useNuxt } from 'nuxt/kit' +import { kebabCase } from 'scule' + +export default defineNuxtModule({ + meta: { + name: 'cloudflare-vars', + }, + setup () { + const nuxt = useNuxt() + + nuxt.hook('nitro:config', config => { + const runtimeConfig = useRuntimeConfig() + const vars: Record = {} + + function walkConfig (obj: Record, prefix = '') { + for (const [key, value] of Object.entries(obj)) { + if (typeof value === 'object' && value !== null) { + walkConfig(value, `${prefix}${key}.`) + } + else if (typeof value !== 'object') { + const varKey = kebabCase(`${prefix}${key}`).toUpperCase().replace(/-/g, '_') + vars[varKey] = value + } + } + } + + walkConfig(runtimeConfig) + + config.cloudflare ||= {} + config.cloudflare.wrangler ||= {} + config.cloudflare.wrangler.vars = { + ...vars, + ...config.cloudflare.wrangler.vars, + } + }) + }, +}) -- 2.51.2