UNPKG

docusaurus-plugin-matomo

Version:
68 lines (59 loc) 2.05 kB
const path = require('path'); module.exports = function (context) { const {siteConfig} = context; const {themeConfig} = siteConfig; const {matomo} = themeConfig || {}; if (!matomo) { throw new Error(`Please specify 'matomo' object in 'themeConfig' with 'matomoUrl' and 'siteId' fields in it to use docusaurus-plugin-matomo`); } const {matomoUrl, siteId} = matomo; if (!matomoUrl) { throw new Error('Please specify the `matomoUrl` field in the `themeConfig.matomo`'); } if (!siteId) { throw new Error('Please specify the `siteId` field in the `themeConfig.matomo`'); } const phpLoader = matomo.phpLoader || 'matomo.php'; const jsLoader = matomo.jsLoader || 'matomo.js'; const isProd = process.env.NODE_ENV === 'production'; return { name: 'docusaurus-plugin-matomo', getClientModules() { return isProd ? [path.resolve(__dirname, './track')] : []; }, injectHtmlTags() { if (!isProd) { return {}; } return { headTags: [ { tagName: 'link', attributes: { rel: 'preconnect', href: `${matomoUrl}`, }, }, { tagName: 'script', innerHTML: ` var _paq = window._paq = window._paq || []; _paq.push(['setRequestMethod', 'POST']); _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); _paq.push(['enableHeartBeatTimer']); (function() { var u="${matomoUrl}"; _paq.push(['setRequestMethod', 'POST']); _paq.push(['setTrackerUrl', u+'${phpLoader}']); _paq.push(['setSiteId', '${siteId}']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript'; g.async=true; g.src=u+'${jsLoader}'; s.parentNode.insertBefore(g,s); })(); `, }, ], }; }, }; };