| 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(['disableCookies']); |
| _paq.push(['trackPageView']); |
| _paq.push(['enableLinkTracking']); |
| (function() { |
| var u="${matomoUrl}"; |
| _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); |
| })(); |
| `, |
| }, |
| ], |
| }; |
| }, |
| }; |
| }; |