From 8fdb920c8ce21b37bd4d7d9f417dc8fb56cfb7d2 Mon Sep 17 00:00:00 2001 From: Jan Vlnas Date: Thu, 24 Oct 2019 11:09:34 +0200 Subject: [PATCH] Bonus: Add Analytics --- now.json | 6 +++++- rollup.config.js | 2 ++ src/analytics.js | 13 +++++++++++++ src/client.js | 5 +++++ 4 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 src/analytics.js diff --git a/now.json b/now.json index b605f40..c0dbd25 100644 --- a/now.json +++ b/now.json @@ -4,5 +4,9 @@ "builds": [{"src": "package.json", "use": "now-sapper"}], "regions": ["arn", "bru", "cdg", "lhr"], "public": true, - "build": {} + "build": { + "env": { + "TRACKING_ID": "@tracking-id" + } + } } diff --git a/rollup.config.js b/rollup.config.js index ee21e91..5e1521c 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -11,6 +11,7 @@ import pkg from './package.json'; const mode = process.env.NODE_ENV; const dev = mode === 'development'; const legacy = !!process.env.SAPPER_LEGACY_BUILD; +const trackingId = process.env.TRACKING_ID || ''; const onwarn = (warning, onwarn) => (warning.code === 'CIRCULAR_DEPENDENCY' && @@ -27,6 +28,7 @@ export default { replace({ 'process.browser': true, 'process.env.NODE_ENV': JSON.stringify(mode), + 'process.env.TRACKING_ID': JSON.stringify(trackingId), }), json(), svelte({ diff --git a/src/analytics.js b/src/analytics.js new file mode 100644 index 0000000..629a219 --- /dev/null +++ b/src/analytics.js @@ -0,0 +1,13 @@ +export function setupAnalytics(gaID) { + window.dataLayer = window.dataLayer || []; + function gtag() { + dataLayer.push(arguments); + } + gtag('js', new Date()); + + gtag('config', gaID); + + const script = document.createElement('script'); + script.src = `https://www.googletagmanager.com/gtag/js?id=${gaID}`; + document.body.appendChild(script); +} diff --git a/src/client.js b/src/client.js index cb8e7fd..6b7278f 100644 --- a/src/client.js +++ b/src/client.js @@ -1,5 +1,10 @@ import * as sapper from '@sapper/app'; +import {setupAnalytics} from './analytics'; sapper.start({ target: document.querySelector('#sapper'), }); + +if (process.env.TRACKING_ID) { + setupAnalytics(process.env.TRACKING_ID); +}