1
0
mirror of https://github.com/kremalicious/gatsby-plugin-matomo.git synced 2024-12-22 09:13:19 +01:00

updates and cleanup

This commit is contained in:
Matthias Kretschmann 2020-02-15 14:07:20 +01:00
parent 4ee4c92524
commit c0269c71e2
Signed by: m
GPG Key ID: 606EEEF3C479A91F
9 changed files with 42 additions and 61 deletions

View File

@ -1,6 +1,3 @@
{ {
"presets": [ "presets": [["babel-preset-gatsby-package", { "browser": true }]]
["@babel/env"],
["@babel/react"]
]
} }

View File

@ -1,10 +0,0 @@
# EditorConfig is awesome: http://EditorConfig.org
[*]
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
charset = utf-8
trim_trailing_whitespace = true

View File

@ -1,10 +1,6 @@
{ {
"extends": [ "extends": ["eslint:recommended", "plugin:prettier/recommended"],
"eslint:recommended", "plugins": ["prettier"],
"plugin:react/recommended",
"plugin:prettier/recommended"
],
"plugins": ["react", "prettier"],
"parserOptions": { "parserOptions": {
"sourceType": "module", "sourceType": "module",
"ecmaFeatures": { "ecmaFeatures": {

View File

@ -1,5 +1,6 @@
{ {
"semi": false, "semi": false,
"singleQuote": true, "singleQuote": true,
"trailingComma": "none" "trailingComma": "none",
"tabWidth": 2
} }

View File

@ -1,4 +1,4 @@
Copyright (c) 2018 Matthias Kretschmann m@kretschmann.io Copyright (c) 2020 Matthias Kretschmann m@kretschmann.io
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

View File

@ -82,7 +82,7 @@ plugins: [
options: { options: {
siteId: 'YOUR_SITE_ID', siteId: 'YOUR_SITE_ID',
matomoUrl: 'https://YOUR_MATOMO_URL.COM', matomoUrl: 'https://YOUR_MATOMO_URL.COM',
siteUrl: 'https://YOUR_LIVE_SITE_URL.COM' siteUrl: 'https://YOUR_LIVE_SITE_URL.COM',
// All the optional settings // All the optional settings
exclude: ['/offline-plugin-app-shell-fallback/'], exclude: ['/offline-plugin-app-shell-fallback/'],
requireConsent: false, requireConsent: false,
@ -118,7 +118,7 @@ See [CHANGELOG.md](CHANGELOG.md).
The MIT License The MIT License
Copyright (c) 2018 Matthias Kretschmann Copyright (c) 2020 Matthias Kretschmann
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

View File

@ -7,39 +7,38 @@
"build": "babel src --out-dir . --ignore __tests__", "build": "babel src --out-dir . --ignore __tests__",
"start": "babel -w src --out-dir . --ignore __tests__", "start": "babel -w src --out-dir . --ignore __tests__",
"test": "eslint ./src/**/*.js", "test": "eslint ./src/**/*.js",
"format": "prettier --write 'src/**/*.{js,jsx}'", "format": "prettier --write 'src/**/*.js'",
"release": "release-it --non-interactive", "release": "release-it --non-interactive",
"changelog": "auto-changelog -p", "changelog": "auto-changelog -p",
"prepublishOnly": "cross-env NODE_ENV=production npm run build" "prepublishOnly": "cross-env NODE_ENV=production npm run build"
}, },
"dependencies": {}, "dependencies": {},
"devDependencies": { "devDependencies": {
"@babel/cli": "^7.4.4", "@babel/cli": "^7.8.4",
"@babel/core": "^7.4.5", "@babel/core": "^7.8.4",
"@babel/preset-env": "^7.4.5", "auto-changelog": "^1.16.2",
"@babel/preset-react": "^7.0.0", "babel-preset-gatsby-package": "^0.2.16",
"auto-changelog": "^1.13.0", "cross-env": "^7.0.0",
"cross-env": "^5.2.0", "eslint": "^6.8.0",
"eslint": "^5.16.0", "eslint-config-prettier": "^6.10.0",
"eslint-config-prettier": "^4.3.0", "eslint-plugin-prettier": "^3.1.2",
"eslint-plugin-prettier": "^3.1.0", "prettier": "^1.19.1",
"eslint-plugin-react": "^7.13.0", "release-it": "^12.4.3"
"prettier": "^1.18.2",
"react": "^16.8.6",
"react-dom": "^16.8.6",
"release-it": "^12.3.0"
}, },
"homepage": "https://github.com/kremalicious/gatsby-plugin-matomo", "homepage": "https://kremalicious.com/gatsby-plugin-matomo",
"keywords": [ "keywords": [
"gatsby", "gatsby",
"gatsby-plugin", "gatsby-plugin",
"analytics",
"matomo", "matomo",
"piwik" "piwik"
], ],
"license": "MIT", "license": "MIT",
"main": "index.js", "main": "index.js",
"peerDependencies": { "peerDependencies": {
"gatsby": ">=1.9.0" "gatsby": ">=2.0.0",
"react": ">=16.4.2",
"react-dom": ">=16.4.2"
}, },
"repository": "github:kremalicious/gatsby-plugin-matomo", "repository": "github:kremalicious/gatsby-plugin-matomo",
"bugs": { "bugs": {

View File

@ -1,5 +1,3 @@
/* eslint-disable no-console */
let first = true let first = true
function getDuration() { function getDuration() {
@ -14,7 +12,7 @@ function getDuration() {
return difference return difference
} }
exports.onRouteUpdate = ({ location, prevLocation }) => { export const onRouteUpdate = ({ location, prevLocation }) => {
if ( if (
(process.env.NODE_ENV === 'production' && typeof _paq !== 'undefined') || (process.env.NODE_ENV === 'production' && typeof _paq !== 'undefined') ||
window.dev === true window.dev === true
@ -40,7 +38,7 @@ exports.onRouteUpdate = ({ location, prevLocation }) => {
_paq.push(['trackAllContentImpressions']) _paq.push(['trackAllContentImpressions'])
if (dev) { if (dev) {
console.log(`[Matomo] Page view for: ${url} - ${title}`) console.debug(`[Matomo] Page view for: ${url} - ${title}`)
} }
} }
@ -58,9 +56,10 @@ exports.onRouteUpdate = ({ location, prevLocation }) => {
_paq.push(['trackEvent', 'javascript', 'load', 'duration', getDuration()]) _paq.push(['trackEvent', 'javascript', 'load', 'duration', getDuration()])
if (dev) { if (dev) {
console.log(`[Matomo] Tracking duration for: ${url}`) console.debug(`[Matomo] Tracking duration for: ${url}`)
} }
} }
} }
return null return null
} }

View File

@ -1,3 +1,4 @@
// eslint-disable-next-line no-unused-vars
import React from 'react' import React from 'react'
function buildTrackingCode(pluginOptions) { function buildTrackingCode(pluginOptions) {
@ -29,29 +30,28 @@ function buildTrackingCode(pluginOptions) {
})(); })();
if (window.dev === true) { if (window.dev === true) {
console.log('[Matomo] Tracking initialized') console.debug('[Matomo] Tracking initialized')
console.log('[Matomo] matomoUrl: ${matomoUrl}, siteId: ${siteId}') console.debug('[Matomo] matomoUrl: ${matomoUrl}, siteId: ${siteId}')
} }
} }
` `
return ( return (
<script <script
key={'gatsby-plugin-matomo'} key="script-gatsby-plugin-matomo"
dangerouslySetInnerHTML={{ __html: html }} dangerouslySetInnerHTML={{ __html: html }}
/> />
) )
} }
function buildTrackingCodeNoJs(pluginOptions, pathname) { function buildTrackingCodeNoJs(pluginOptions, pathname) {
const html = `<img src="${pluginOptions.matomoUrl}/piwik.php?idsite=${ const { matomoUrl, siteId, siteUrl } = pluginOptions
pluginOptions.siteId const html = `<img src="${matomoUrl}/piwik.php?idsite=${siteId}&rec=1&url=${siteUrl +
}&rec=1&url=${pluginOptions.siteUrl +
pathname}" style="border:0" alt="tracker" />` pathname}" style="border:0" alt="tracker" />`
return ( return (
<noscript <noscript
key={'gatsby-plugin-matomo'} key="noscript-gatsby-plugin-matomo"
dangerouslySetInnerHTML={{ __html: html }} dangerouslySetInnerHTML={{ __html: html }}
/> />
) )
@ -62,29 +62,28 @@ function buildHead(pluginOptions) {
<link <link
rel="preconnect" rel="preconnect"
href={pluginOptions.matomoUrl} href={pluginOptions.matomoUrl}
key={'gatsby-plugin-matomo'} key="preconnect-gatsby-plugin-matomo"
/> />
) )
} }
exports.onRenderBody = ( export const onRenderBody = (
{ setHeadComponents, setPostBodyComponents, pathname }, { setHeadComponents, setPostBodyComponents, pathname },
pluginOptions pluginOptions
) => { ) => {
const { exclude, dev } = pluginOptions
const isProduction = process.env.NODE_ENV === 'production'
let excludePaths = ['/offline-plugin-app-shell-fallback/'] let excludePaths = ['/offline-plugin-app-shell-fallback/']
if (typeof pluginOptions.exclude !== 'undefined') { if (typeof exclude !== 'undefined') {
pluginOptions.exclude.map(exclude => { exclude.map(exclude => {
excludePaths.push(exclude) excludePaths.push(exclude)
}) })
} }
const isPathExcluded = excludePaths.some(path => pathname === path) const isPathExcluded = excludePaths.some(path => pathname === path)
if ( if ((isProduction || dev === true) && !isPathExcluded) {
(process.env.NODE_ENV === 'production' || pluginOptions.dev === true) &&
!isPathExcluded
) {
setHeadComponents([buildHead(pluginOptions)]) setHeadComponents([buildHead(pluginOptions)])
setPostBodyComponents([ setPostBodyComponents([
buildTrackingCode(pluginOptions), buildTrackingCode(pluginOptions),