website/configs/plugins.js (60 lines of code) (raw):

const path = require('path') const setupPlugins = function ({ root }) { const plugins = [ async function tailwindPlugin(context, options) { return { name: 'docusaurus-tailwindcss', configurePostCss(postcssOptions) { // Appends TailwindCSS and AutoPrefixer. postcssOptions.plugins.push(require('tailwindcss')) postcssOptions.plugins.push(require('autoprefixer')) return postcssOptions }, } }, // Handle "back to main menu" issue with Docusaurus // When the rendered webpage zoomed to 200%, the "back to main menu" is not functional. // This function removes the DOM element after rendering. function handleBackToMainMenuBtn(context, options) { return { name: 'handle-back-to-main-btn', injectHtmlTags({ content }) { return { postBodyTags: [ `<script> document.addEventListener('keyup', (event)=> { if(event.key === 'Tab') { const backBtn = document.querySelector(".navbar-sidebar__back"); if(backBtn) backBtn.style.display = "none"; } if(event.key === 'Escape') { const closeBtn = document.querySelector(".navbar-sidebar__close"); closeBtn.click(); } }); window.addEventListener('resize', () => { const backBtn = document.querySelector(".navbar-sidebar__back"); if(backBtn) backBtn.style.display = "none"; }); </script>`, ], } }, } }, ] // only add gtag in production const trackingID = process.env.trackingID const gtmTrackingID = process.env.gtmTrackingID if (trackingID && trackingID !== '' && gtmTrackingID && gtmTrackingID !== '') { const gtagPlugin = [ path.resolve(root, 'src/plugins/visitor-tracking-plugin'), { trackingID, gtmTrackingID, anonymizeIP: true, }, ] plugins.push(gtagPlugin) console.log(`Add visitor-tracking-plugin Successfully. tracking ID: ${trackingID}, GTM tracking ID: ${gtmTrackingID}`) } else { console.warn('Failed to get "trackingID" for gtag! Should be null in development, but should be non empty string in Production.') } return plugins } module.exports = setupPlugins