From 78d62881ba768eb336976f5ecd3148be99427466 Mon Sep 17 00:00:00 2001 From: Luke Nelson Date: Sat, 30 Mar 2024 11:33:28 +0000 Subject: [PATCH] Switch Nitro plugin with Nuxt plugin --- src/module.ts | 7 ++++--- src/runtime/nitro-plugin.ts | 19 ------------------- src/runtime/nuxt-plugin.ts | 26 ++++++++++++++++++++++++++ 3 files changed, 30 insertions(+), 22 deletions(-) delete mode 100644 src/runtime/nitro-plugin.ts create mode 100644 src/runtime/nuxt-plugin.ts diff --git a/src/module.ts b/src/module.ts index 44a5313..b121bce 100644 --- a/src/module.ts +++ b/src/module.ts @@ -1,7 +1,7 @@ import { fileURLToPath } from 'url' import { promises as fsp } from 'fs' import { join, dirname } from 'path' -import { defineNuxtModule, createResolver, addServerHandler, addTemplate } from '@nuxt/kit' +import { defineNuxtModule, createResolver, addServerHandler, addTemplate, addPlugin } from '@nuxt/kit' import { pluginName, configKey } from './config' export interface ModuleOptions { @@ -110,10 +110,11 @@ export default defineNuxtModule({ config.externals.inline.push(runtimeDir) config.virtual = config.virtual || {} config.virtual['#nuxt-cloudflare-analytics'] = virtualConfig - config.plugins = config.plugins || [] - config.plugins.push(resolve(runtimeDir, 'nitro-plugin')) }) + // Add plugin to Nuxt 3 + addPlugin(resolve(runtimeDir, 'nuxt-plugin')) + nuxt.options.build.transpile.push(runtimeDir) } }, diff --git a/src/runtime/nitro-plugin.ts b/src/runtime/nitro-plugin.ts deleted file mode 100644 index 54999a5..0000000 --- a/src/runtime/nitro-plugin.ts +++ /dev/null @@ -1,19 +0,0 @@ -import type { NitroAppPlugin } from 'nitropack' - -// @ts-expect-error - This is a runtime file, so we can't use the types -import * as config from '#nuxt-cloudflare-analytics' - -const plugin: NitroAppPlugin = nitro => { - nitro.hooks.hook('render:html', htmlContext => { - const beaconData = JSON.stringify({ - token: config.token, - spa: true, - }) - - const scriptPath = config.scriptPath || 'https://static.cloudflareinsights.com/beacon.min.js' - - htmlContext.body.push(``) - }) -} - -export default plugin diff --git a/src/runtime/nuxt-plugin.ts b/src/runtime/nuxt-plugin.ts new file mode 100644 index 0000000..ae8fa54 --- /dev/null +++ b/src/runtime/nuxt-plugin.ts @@ -0,0 +1,26 @@ +import { defineNuxtPlugin, useHead } from '#imports' + +export default defineNuxtPlugin({ + name: 'nuxt-cloudflare-analytics', + paralell: true, + setup(nuxt) { + const config = nuxt.runtimeConfig.public.nuxtCloudflareAnalytics + + const beaconData = JSON.stringify({ + token: config.token, + spa: true, + }) + + const scriptPath = config.scriptPath || 'https://static.cloudflareinsights.com/beacon.min.js' + + useHead({ + script: [ + { + defer: true, + src: scriptPath, + 'data-cf-beacon': beaconData, + }, + ], + }) + }, +})