aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/config.ts6
-rw-r--r--src/plugins/plausible.plugin.ts27
2 files changed, 32 insertions, 1 deletions
diff --git a/src/config.ts b/src/config.ts
index 1ceff27..58fa392 100644
--- a/src/config.ts
+++ b/src/config.ts
@@ -29,6 +29,12 @@ export const config = figue({
},
},
plausible: {
+ isTrackerEnabled: {
+ doc: 'Is the tracker enabled',
+ format: 'boolean',
+ default: false,
+ env: 'VITE_TRACKER_ENABLED',
+ },
domain: {
doc: 'Plausible current domain',
format: 'string',
diff --git a/src/plugins/plausible.plugin.ts b/src/plugins/plausible.plugin.ts
index 10975ea..50a694d 100644
--- a/src/plugins/plausible.plugin.ts
+++ b/src/plugins/plausible.plugin.ts
@@ -1,11 +1,36 @@
import { config } from '@/config';
+import { noop } from 'lodash';
import Plausible from 'plausible-tracker';
import type { App } from 'vue';
+function createFakePlausibleInstance(): Pick<ReturnType<typeof Plausible>, 'trackEvent' | 'enableAutoPageviews'> {
+ return {
+ trackEvent: noop,
+ enableAutoPageviews: () => noop,
+ };
+}
+
+function createPlausibleInstance({
+ config,
+}: {
+ config: {
+ isTrackerEnabled: boolean;
+ domain: string;
+ apiHost: string;
+ trackLocalhost: boolean;
+ };
+}) {
+ if (config.isTrackerEnabled) {
+ return Plausible(config);
+ }
+
+ return createFakePlausibleInstance();
+}
+
export const plausible = {
install: (app: App) => {
- const plausible = Plausible(config.plausible);
+ const plausible = createPlausibleInstance({ config: config.plausible });
plausible.enableAutoPageviews();
app.provide('plausible', plausible);