Skip to content

Commit 8c69f32

Browse files
committed
Added basic google analytics support
1 parent 4d52344 commit 8c69f32

File tree

2 files changed

+106
-61
lines changed

2 files changed

+106
-61
lines changed

.codedoc/config.ts

Lines changed: 82 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,95 +1,116 @@
1-
import {
2-
configuration,
1+
import {
2+
configuration,
33
DefaultConfig,
44
DefaultMarkdownCustomInlineComponents,
5-
DefaultMarkdownCustomComponents
6-
} from '@codedoc/core';
5+
DefaultMarkdownCustomComponents,
6+
} from "@codedoc/core";
77

8-
import { Loading, formulaPlugin } from '@codedoc/core/components';
8+
import { Loading, formulaPlugin } from "@codedoc/core/components";
99

10-
import { theme } from './theme';
11-
import { Big } from './components/big';
12-
import { PersonCard } from './components/person-card';
13-
import { JoinButton$ } from './components/join-beta/button';
14-
import { JoinCreatorButton$ } from './components/join-creator/button';
10+
import { theme } from "./theme";
11+
import { Big } from "./components/big";
12+
import { PersonCard } from "./components/person-card";
13+
import { JoinButton$ } from "./components/join-beta/button";
14+
import { JoinCreatorButton$ } from "./components/join-creator/button";
1515

16-
import { LogoutButton$ } from './components/account/logout';
17-
import { LoginButton$ } from './components/account/login';
18-
import { AccountStatusBound } from './components/account/status-bound';
19-
import { AccountPropBound } from './components/account/prop-bound';
20-
import { AccountProp$, AccountPropCode$ } from './components/account/account-prop';
21-
import { EditNameButton$ } from './components/account/edit-name';
22-
import { BindRepoButton$ } from './components/account/bind-repo';
23-
import { PublishButton$, RefreshPublishWebhookButton$ } from './components/account/publish-blog';
24-
import { PublishStatus$ } from './components/account/publish-status';
25-
import { ArticlePreview, ArticlePreviewRow, deferBgImages$ } from './components/article-preview';
16+
import { LogoutButton$ } from "./components/account/logout";
17+
import { LoginButton$ } from "./components/account/login";
18+
import { AccountStatusBound } from "./components/account/status-bound";
19+
import { AccountPropBound } from "./components/account/prop-bound";
20+
import {
21+
AccountProp$,
22+
AccountPropCode$,
23+
} from "./components/account/account-prop";
24+
import { EditNameButton$ } from "./components/account/edit-name";
25+
import { BindRepoButton$ } from "./components/account/bind-repo";
26+
import {
27+
PublishButton$,
28+
RefreshPublishWebhookButton$,
29+
} from "./components/account/publish-blog";
30+
import { PublishStatus$ } from "./components/account/publish-status";
31+
import {
32+
ArticlePreview,
33+
ArticlePreviewRow,
34+
deferBgImages$,
35+
} from "./components/article-preview";
2636

37+
import { googleAnalytics } from "./plugins/ga";
2738

28-
export const config = /*#__PURE__*/configuration({
39+
export const config = /*#__PURE__*/ configuration({
2940
theme,
41+
dev: {
42+
port: 3030,
43+
},
3044
page: {
3145
title: {
32-
base: 'coding.blog'
46+
base: "coding.blog",
3347
},
34-
favicon: '/favicon.ico',
48+
scripts: [],
49+
favicon: "/favicon.ico",
3550
meta: {
36-
subject: 'A Blog for Everything Coding',
37-
description: 'An open-source blog system for coding and coders. No content-marketing, no ads in disguise. Pure quality articles.',
51+
subject: "A Blog for Everything Coding",
52+
description:
53+
"An open-source blog system for coding and coders. No content-marketing, no ads in disguise. Pure quality articles.",
3854
keywords: [
39-
'blog',
40-
'article',
41-
'software',
42-
'programming',
43-
'code',
44-
'open-source',
45-
'open source',
46-
'coding',
47-
'tech',
48-
'IT',
49-
'blogging',
50-
'tutorials',
51-
'articles',
52-
'convenient',
53-
'beautiful',
54-
'modern',
55-
]
56-
}
55+
"blog",
56+
"article",
57+
"software",
58+
"programming",
59+
"code",
60+
"open-source",
61+
"open source",
62+
"coding",
63+
"tech",
64+
"IT",
65+
"blogging",
66+
"tutorials",
67+
"articles",
68+
"convenient",
69+
"beautiful",
70+
"modern",
71+
],
72+
},
5773
},
5874
dest: {
59-
html: 'dist',
60-
assets: 'dist',
75+
html: "dist",
76+
assets: "dist",
6177
},
6278
bundle: {
63-
init: [
64-
...DefaultConfig.bundle.init,
65-
deferBgImages$
66-
],
79+
init: [...DefaultConfig.bundle.init, deferBgImages$],
6780
},
68-
plugins: [formulaPlugin],
81+
plugins: [formulaPlugin, googleAnalytics("UA-177467962-1")],
6982
markdown: {
7083
customInlineComponents: {
7184
...DefaultMarkdownCustomInlineComponents,
72-
Loading, AccountProp: AccountProp$
85+
Loading,
86+
AccountProp: AccountProp$,
7387
},
7488
customComponents: {
7589
...DefaultMarkdownCustomComponents,
76-
Big, PersonCard,
90+
Big,
91+
PersonCard,
7792
JoinButton: JoinButton$,
7893
JoinCreatorButton: JoinCreatorButton$,
7994

80-
LogoutButton: LogoutButton$, LoginButton: LoginButton$,
81-
AccountStatusBound, AccountPropBound, AccountProp: AccountPropCode$,
82-
EditNameButton: EditNameButton$, BindRepoButton: BindRepoButton$,
83-
PublishButton: PublishButton$, RefreshPublishWebhookButton: RefreshPublishWebhookButton$,
95+
LogoutButton: LogoutButton$,
96+
LoginButton: LoginButton$,
97+
AccountStatusBound,
98+
AccountPropBound,
99+
AccountProp: AccountPropCode$,
100+
EditNameButton: EditNameButton$,
101+
BindRepoButton: BindRepoButton$,
102+
PublishButton: PublishButton$,
103+
RefreshPublishWebhookButton: RefreshPublishWebhookButton$,
84104
PublishStatus: PublishStatus$,
85105

86-
ArticlePreview, ArticlePreviewRow
87-
}
106+
ArticlePreview,
107+
ArticlePreviewRow,
108+
},
88109
},
89110
misc: {
90111
github: {
91-
user: 'CONNECT-platform',
92-
repo: 'coding-blog',
93-
}
112+
user: "CONNECT-platform",
113+
repo: "coding-blog",
114+
},
94115
},
95116
});

.codedoc/plugins/ga/index.tsx

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { StaticRenderer } from '@connectv/sdh';
2+
import register from 'jsdom-global';
3+
import { ConfigOverride } from '@codedoc/core';
4+
5+
const renderer = new StaticRenderer(); // --> create a static renderer
6+
register(); // --> register jdom global so that we can create DOM elements
7+
8+
9+
export function googleAnalytics(gacode: string) {
10+
return function(): ConfigOverride {
11+
return {
12+
page: {
13+
scripts: [
14+
<script>{`
15+
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
16+
ga('create', 'UA-${gacode}-Y', 'auto');
17+
ga('send', 'pageview');
18+
`}</script>,
19+
<script async src='https://www.google-analytics.com/analytics.js'/>
20+
]
21+
}
22+
}
23+
};
24+
}

0 commit comments

Comments
 (0)