From e7293cc0a97fa72606ea480531c36dfbcd70f8a0 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Mon, 11 Dec 2023 17:42:38 +0530 Subject: [PATCH] feat: Add env vars to configure plausible --- .github/workflows/deploy.yml | 3 +++ Dockerfile | 2 ++ README.md | 6 ++++++ netlify.toml | 3 +++ src/env.d.ts | 2 ++ src/lib/util/env.ts | 6 ++++-- src/lib/util/stats.ts | 5 +++-- 7 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 netlify.toml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index fcdc4c04..87b64abc 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -20,6 +20,9 @@ jobs: cache: yarn - name: Build & Deploy + env: + MERMAID_DOMAIN: 'mermaid.live' + MERMAID_ANALYTICS_URL: 'https://p.mermaid.live' run: | export DEPLOY=true [ "$GITHUB_EVENT_NAME" != "pull_request" ] && rm -rf docs/_app/ diff --git a/Dockerfile b/Dockerfile index c8ab6c84..b400b6a7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,6 +16,8 @@ FROM mermaid-live-editor-dependencies AS mermaid-live-editor-builder ARG MERMAID_RENDERER_URL ARG MERMAID_KROKI_RENDERER_URL +ARG MERMAID_ANALYTICS_URL +ARG MERMAID_DOMAIN COPY . ./ diff --git a/README.md b/README.md index 5c18f655..a9656501 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,12 @@ Default is `https://mermaid.ink` When building set the MERMAID_KROKI_RENDERER_URL build argument to your Kroki instance. Default is `https://kroki.io` +### To configure Analytics + +When building set the MERMAID_ANALYTICS_URL build argument to your plausible instance, and MERMAID_DOMAIN to your domain. + +Default is empty, disabling analytics. + ### Development ```bash diff --git a/netlify.toml b/netlify.toml new file mode 100644 index 00000000..e06aa492 --- /dev/null +++ b/netlify.toml @@ -0,0 +1,3 @@ +[build.environment] + MERMAID_ANALYTICS_URL = 'https://p.mermaid.live' + MERMAID_DOMAIN = 'mermaid.live' diff --git a/src/env.d.ts b/src/env.d.ts index 3bdd9740..ec4a2ff4 100644 --- a/src/env.d.ts +++ b/src/env.d.ts @@ -3,6 +3,8 @@ interface ImportMetaEnv { readonly MERMAID_RENDERER_URL?: string; readonly MERMAID_KROKI_RENDERER_URL?: string; + readonly MERMAID_ANALYTICS_URL?: string; + readonly MERMAID_DOMAIN?: string; // more env variables... } diff --git a/src/lib/util/env.ts b/src/lib/util/env.ts index bc500063..d19f1a95 100644 --- a/src/lib/util/env.ts +++ b/src/lib/util/env.ts @@ -1,4 +1,6 @@ export const env = { rendererUrl: import.meta.env.MERMAID_RENDERER_URL ?? 'https://mermaid.ink', - krokiRendererUrl: import.meta.env.MERMAID_KROKI_RENDERER_URL ?? 'https://kroki.io' -}; + krokiRendererUrl: import.meta.env.MERMAID_KROKI_RENDERER_URL ?? 'https://kroki.io', + analyticsUrl: import.meta.env.MERMAID_ANALYTICS_URL ?? '', + domain: import.meta.env.MERMAID_DOMAIN ?? 'mermaid.live' +} as const; diff --git a/src/lib/util/stats.ts b/src/lib/util/stats.ts index 2573ff52..7a5030b1 100644 --- a/src/lib/util/stats.ts +++ b/src/lib/util/stats.ts @@ -1,5 +1,6 @@ import { browser } from '$app/environment'; import type { AnalyticsInstance } from 'analytics'; +import { env } from './env'; export let analytics: AnalyticsInstance | undefined; export const initAnalytics = async (): Promise => { @@ -13,10 +14,10 @@ export const initAnalytics = async (): Promise => { app: 'mermaid-live-editor', plugins: [ plausible({ - domain: 'mermaid.live', + domain: env.domain, hashMode: false, // All tracked stats are public and available at https://p.mermaid.live/mermaid.live - apiHost: 'https://p.mermaid.live' + apiHost: env.analyticsUrl }) ] });