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:
parent
4ee4c92524
commit
c0269c71e2
5
.babelrc
5
.babelrc
@ -1,6 +1,3 @@
|
|||||||
{
|
{
|
||||||
"presets": [
|
"presets": [["babel-preset-gatsby-package", { "browser": true }]]
|
||||||
["@babel/env"],
|
|
||||||
["@babel/react"]
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
@ -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
|
|
@ -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": {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"semi": false,
|
"semi": false,
|
||||||
"singleQuote": true,
|
"singleQuote": true,
|
||||||
"trailingComma": "none"
|
"trailingComma": "none",
|
||||||
|
"tabWidth": 2
|
||||||
}
|
}
|
||||||
|
2
LICENSE
2
LICENSE
@ -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:
|
||||||
|
|
||||||
|
@ -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:
|
||||||
|
|
||||||
|
33
package.json
33
package.json
@ -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": {
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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),
|
||||||
|
Loading…
Reference in New Issue
Block a user