Skip to content

Commit

Permalink
update docusaurus config and create posthog plugin based off the orig…
Browse files Browse the repository at this point in the history
…inal existent
  • Loading branch information
carlagn committed Nov 5, 2024
1 parent 53428da commit 23e4f1b
Show file tree
Hide file tree
Showing 3 changed files with 89 additions and 2 deletions.
63 changes: 63 additions & 0 deletions client-plugins/posthog-docusaurus/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
const path = require("path");

module.exports = function (context, options) {
if (!options.apiKey) {
throw new Error(
`You need to specify an 'apiKey' to use posthog-docusaurus`
);
}

const {
apiKey,
appUrl = "https://us.i.posthog.com",
enableInDevelopment = false,
...rest
} = options;

if (!apiKey) {
throw new Error(
"You specified the `posthog` object in `themeConfig` but the `apiKey` field was missing. " +
"Please ensure this is not a mistake."
);
}

const posthogEnabled =
process.env.NODE_ENV === "production" || enableInDevelopment;

return {
name: "posthog-docusaurus",

getClientModules() {
return posthogEnabled ? [path.resolve(__dirname, "./posthog")] : [];
},

injectHtmlTags() {
if (!posthogEnabled) {
return {};
}

const posthogInitOptions = { api_host: appUrl, ...rest };

return {
headTags: [
{
tagName: "link",
attributes: {
rel: "preconnect",
href: appUrl,
},
},
{
tagName: "script",
innerHTML: `
!function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement("script")).type="text/javascript",p.async=!0,p.src=s.api_host.replace(".i.posthog.com","-assets.i.posthog.com")+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a="posthog",u.people=u.people||[],u.toString=function(t){var e="posthog";return"posthog"!==a&&(e+="."+a),t||(e+=" (stub)"),e},u.people.toString=function(){return u.toString(1)+".people (stub)"},o="capture identify alias people.set people.set_once set_config register register_once unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled onFeatureFlags getFeatureFlag getFeatureFlagPayload reloadFeatureFlags group updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures getActiveMatchingSurveys getSurveys onSessionId".split(" "),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[]);
posthog.init(${JSON.stringify(apiKey)}, ${JSON.stringify(
posthogInitOptions
)})
`,
},
],
};
},
};
};
24 changes: 24 additions & 0 deletions client-plugins/posthog-docusaurus/posthog.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment';

export default (function () {
if (!ExecutionEnvironment.canUseDOM) {
return null;
}

return {
onRouteUpdate() {
window.posthog.capture('$pageview');
},
onRouteDidUpdate({location, previousLocation}) {
if (previousLocation && location.pathname !== previousLocation.pathname) {
emitAnalyticsEvent('pageview', {
page_title: document.title,
page_location: window.location.href,
page_path: location.pathname,
});
}
},
};
})();


4 changes: 2 additions & 2 deletions docusaurus.config.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { themes as prismThemes } from "prism-react-renderer";
const path = require('path')

import type { Config } from "@docusaurus/types";
import type * as Preset from "@docusaurus/preset-classic";
Expand Down Expand Up @@ -71,8 +72,7 @@ const config: Config = {
],
plugins: [
"docusaurus-plugin-sass",
[
"posthog-docusaurus",
[path.resolve(__dirname, 'plugins', 'posthog-docusaurus'),
{
apiKey: "phc_cmc85avbWyuJ2JyKdGPdv7dxXli8xLdWDBPbvIXWJfs",
appUrl: "https://us.i.posthog.com",
Expand Down

0 comments on commit 23e4f1b

Please sign in to comment.