diff --git a/.github/workflows/build_and_deploy_docs.yaml b/.github/workflows/build_and_deploy_docs.yaml index 2dbbf1f8cd..084d955d79 100644 --- a/.github/workflows/build_and_deploy_docs.yaml +++ b/.github/workflows/build_and_deploy_docs.yaml @@ -54,6 +54,7 @@ jobs: run: make build-docs env: APIFY_SIGNING_TOKEN: ${{ secrets.APIFY_SIGNING_TOKEN }} + SEGMENT_TOKEN: ${{ secrets.SEGMENT_TOKEN }} - name: Set up GitHub Pages uses: actions/configure-pages@v5 diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index ce06480ea8..f6904484df 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -226,6 +226,13 @@ module.exports = { }, }; }, + [ + path.resolve(__dirname, 'src/plugins/docusaurus-plugin-segment'), + { + writeKey: process.env.SEGMENT_TOKEN, + allowedInDev: false, + }, + ], ], themeConfig: /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ ({ diff --git a/website/src/plugins/docusaurus-plugin-segment/index.js b/website/src/plugins/docusaurus-plugin-segment/index.js new file mode 100644 index 0000000000..590838a770 --- /dev/null +++ b/website/src/plugins/docusaurus-plugin-segment/index.js @@ -0,0 +1,37 @@ +const path = require('path'); + +module.exports = function (context, options) { + const { writeKey, allowedInDev = false } = options; + + return { + name: 'docusaurus-plugin-segment', + + getClientModules() { + return [path.resolve(__dirname, './segment')]; + }, + + injectHtmlTags() { + if (process.env.NODE_ENV !== 'production' && !allowedInDev) { + return {}; + } + + if (!writeKey) { + console.warn('You need to specify a Segment writeKey in the plugin options'); + return {}; + } + + return { + headTags: [ + { + tagName: 'script', + innerHTML: ` + !function(){var i="analytics",analytics=window[i]=window[i]||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","screen","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware","register"];analytics.factory=function(e){return function(){if(window[i].initialized)return window[i][e].apply(window[i],arguments);var n=Array.prototype.slice.call(arguments);if(["track","screen","alias","group","page","identify"].indexOf(e)>-1){var c=document.querySelector("link[rel='canonical']");n.push({__t:"bpc",c:c&&c.getAttribute("href")||void 0,p:location.pathname,u:location.href,s:location.search,t:document.title,r:document.referrer})}n.unshift(e);analytics.push(n);return analytics}};for(var n=0;n { + // Don't track page views on development + if (process.env.NODE_ENV === 'production' && window.analytics) { + window.analytics.page({ + app: 'crawlee', + path: window.location.pathname, + url: window.location.href, + search: window.location.search, + }); + } + }, 0); + }, +} : null;