nuxt-gtag
Version:
Natively integrates Google Tag into Nuxt
53 lines (49 loc) • 1.28 kB
JavaScript
import { defineNuxtModule, createResolver, addImports, addPlugin } from '@nuxt/kit';
import { defu } from 'defu';
const name = "nuxt-gtag";
const version = "4.0.0";
const module = defineNuxtModule({
meta: {
name,
version,
configKey: "gtag",
compatibility: {
nuxt: ">=3.7"
}
},
defaults: {
enabled: true,
initMode: "auto",
id: "",
initCommands: [],
config: {},
tags: [],
loadingStrategy: "defer",
url: "https://www.googletagmanager.com/gtag/js"
},
setup(options, nuxt) {
const { resolve } = createResolver(import.meta.url);
if (!options.enabled) {
addImports(["useGtag", "useTrackEvent"].map((name2) => ({
from: resolve(`runtime/composables/${name2}Mock`),
name: `${name2}Mock`,
as: name2
})));
return;
}
nuxt.options.runtimeConfig.public.gtag = defu(
nuxt.options.runtimeConfig.public.gtag,
options
);
nuxt.options.build.transpile.push(resolve("runtime"));
addImports(["useGtag", "useTrackEvent"].map((name2) => ({
from: resolve(`runtime/composables/${name2}`),
name: name2
})));
addPlugin({
src: resolve("runtime/plugin.client"),
mode: "client"
});
}
});
export { module as default };