blob: bdd51262fe1972d78248c79731f537f545ad63e2 [file] [log] [blame]
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);
})();
`,
},
],
};
},
};
};