From 03acd8966f2f46317b65a53bd5f937198dd2435a Mon Sep 17 00:00:00 2001 From: rogermparent Date: Fri, 11 Nov 2022 15:10:58 -0500 Subject: [PATCH 1/2] Fix plausible script tags and make them configurable (#105) * Add plausible through metadata * Use Gatsby SiteMetadata for plausible domain and src * Use automatic plausible inference and relative proxy source links * Disable plausible on example * v0.1.23 * Add plausibleAPI * Re-disable plausible in example * Fix conditional plausible disable * Re-add defaults for max compatibility * Use disablePlausible flag and change mechanism to signal with src * Use pluginOptions for src/api/domain and use src presence over extra boolean flag * Allow null on plausible options * Change src to null --- packages/example/gatsby-config.js | 5 +- .../gatsby-theme-iterative/gatsby-config.js | 9 ++- .../gatsby-theme-iterative/gatsby-node.js | 16 ++++- packages/gatsby-theme-iterative/gatsby-ssr.js | 22 ++++++ packages/gatsby-theme-iterative/package.json | 2 +- .../MainLayout/DefaultSEO/index.tsx | 70 ++++++++++--------- .../src/queries/siteMeta.ts | 6 ++ 7 files changed, 92 insertions(+), 38 deletions(-) create mode 100644 packages/gatsby-theme-iterative/gatsby-ssr.js diff --git a/packages/example/gatsby-config.js b/packages/example/gatsby-config.js index 2a089bd0..3141ef49 100644 --- a/packages/example/gatsby-config.js +++ b/packages/example/gatsby-config.js @@ -9,13 +9,14 @@ module.exports = { title: 'Example website', description: 'Example website description', keywords: ['docs', 'test'], - siteUrl: 'http://localhost:8000' + siteUrl: 'http://gatsby-theme-iterative-example.herokuapp.com' }, plugins: [ { resolve: themePackageName, options: { - simpleLinkerTerms: require('./content/linked-terms') + simpleLinkerTerms: require('./content/linked-terms'), + plausibleSrc: null } }, { diff --git a/packages/gatsby-theme-iterative/gatsby-config.js b/packages/gatsby-theme-iterative/gatsby-config.js index 0f8fa423..226503db 100644 --- a/packages/gatsby-theme-iterative/gatsby-config.js +++ b/packages/gatsby-theme-iterative/gatsby-config.js @@ -20,6 +20,9 @@ const defaults = require('./config-defaults') module.exports = ({ simpleLinkerTerms, + plausibleSrc = '/pl/js/plausible.outbound-links.js', + plausibleAPI = '/pl/api/event', + plausibleDomain, postCssPlugins = [ require('tailwindcss/nesting')(require('postcss-nested')), autoprefixer, @@ -154,7 +157,9 @@ module.exports = ({ ].filter(Boolean), siteMetadata: { author: 'Iterative', - siteUrl: 'https://example.com', - titleTemplate: '' + titleTemplate: '', + plausibleSrc, + plausibleAPI, + plausibleDomain } }) diff --git a/packages/gatsby-theme-iterative/gatsby-node.js b/packages/gatsby-theme-iterative/gatsby-node.js index b933c91e..c37c3ccc 100644 --- a/packages/gatsby-theme-iterative/gatsby-node.js +++ b/packages/gatsby-theme-iterative/gatsby-node.js @@ -32,7 +32,10 @@ exports.pluginOptionsSchema = ({ Joi }) => { postCssPlugins: Joi.array(), argsLinkerPath: Joi.alternatives() .try(Joi.string(), Joi.array().items(Joi.string())) - .default(defaults.argsLinkerPath) + .default(defaults.argsLinkerPath), + plausibleSrc: [Joi.string().optional(), Joi.allow(null)], + plausibleAPI: [Joi.string().optional(), Joi.allow(null)], + plausibleDomain: [Joi.string().optional(), Joi.allow(null)] }) } @@ -63,6 +66,17 @@ exports.createSchemaCustomization = async api => { name: 'String!', match: '[String]' } + }), + buildObjectType({ + name: 'SiteSiteMetadata', + fields: { + author: 'String', + siteUrl: 'String', + titleTemplate: 'String', + plausibleSrc: 'String', + plausibleDomain: 'String', + plausibleAPI: 'String' + } }) ]) } diff --git a/packages/gatsby-theme-iterative/gatsby-ssr.js b/packages/gatsby-theme-iterative/gatsby-ssr.js new file mode 100644 index 00000000..5be91083 --- /dev/null +++ b/packages/gatsby-theme-iterative/gatsby-ssr.js @@ -0,0 +1,22 @@ +/* eslint-env node */ +const React = require('react') + +const PageWrapper = require('./src/components/PageWrapper').default + +exports.wrapPageElement = PageWrapper + +const onRenderBody = ({ setHeadComponents }, { plausibleSrc }) => { + if (plausibleSrc) { + return setHeadComponents([ +