Skip to content

Commit 3ed7477

Browse files
authored
feat(plugin-clarity-analytics): supports clarity analytics (#553)
1 parent 2219e40 commit 3ed7477

File tree

17 files changed

+348
-0
lines changed

17 files changed

+348
-0
lines changed

docs/.vuepress/configs/sidebar/en.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ export const sidebarEn: SidebarOptions = {
4747

4848
'/plugins/analytics/': [
4949
'baidu-analytics',
50+
'clarity-analytics',
5051
'google-analytics',
5152
'umami-analytics',
5253
],

docs/.vuepress/configs/sidebar/zh.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ export const sidebarZh: SidebarOptions = {
4747

4848
'/zh/plugins/analytics/': [
4949
'baidu-analytics',
50+
'clarity-analytics',
5051
'google-analytics',
5152
'umami-analytics',
5253
],
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
---
2+
icon: chart-no-axes-combined
3+
---
4+
5+
# clarity-analytics
6+
7+
<NpmBadge package="@vuepress/plugin-clarity-analytics" />
8+
9+
Integrate [Clarity Analytics](https://clarity.microsoft.com/) into VuePress.
10+
11+
## Usage
12+
13+
```bash
14+
npm i -D @vuepress/plugin-clarity-analytics@next
15+
```
16+
17+
```ts title=".vuepress/config.ts"
18+
import { clarityAnalyticsPlugin } from '@vuepress/plugin-clarity-analytics'
19+
20+
export default {
21+
plugins: [
22+
clarityAnalyticsPlugin({
23+
// options
24+
}),
25+
],
26+
}
27+
```
28+
29+
### Reporting Events
30+
31+
The plugin helps you understand user interaction with your website.
32+
33+
[Supported Features](https://learn.microsoft.com/en-us/clarity/setup-and-installation/about-clarity#supported-features)
34+
35+
- Session recordings
36+
- Heatmaps
37+
- Event and funnel tracking
38+
- Chat and summarize with Copilot
39+
40+
After using this plugin, the global `clarity()` function is available on the `window` object for [advanced features](https://learn.microsoft.com/en-us/clarity/setup-and-installation/clarity-api).
41+
42+
## Options
43+
44+
### id
45+
46+
- Type: `string`
47+
- Required: Yes
48+
- Details: Clarity Analytics project ID.
49+
50+
### crossOrigin
51+
52+
- Type: `string`
53+
- Default: `undefined`
54+
- Details: The `crossorigin` attribute, provides support for `CORS`.
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
---
2+
icon: chart-no-axes-combined
3+
---
4+
5+
# clarity-analytics
6+
7+
<NpmBadge package="@vuepress/plugin-clarity-analytics" />
8+
9+
[Clarity Analytics](https://clarity.microsoft.com/) 集成到 VuePress 中。
10+
11+
## 使用方法
12+
13+
```bash
14+
npm i -D @vuepress/plugin-clarity-analytics@next
15+
```
16+
17+
```ts title=".vuepress/config.ts"
18+
import { clarityAnalyticsPlugin } from '@vuepress/plugin-clarity-analytics'
19+
20+
export default {
21+
plugins: [
22+
clarityAnalyticsPlugin({
23+
// 配置项
24+
}),
25+
],
26+
}
27+
```
28+
29+
### 事件上报
30+
31+
本插件可帮助你更好地了解用户跟你的网站的交互。
32+
33+
[支持的功能](https://learn.microsoft.com/en-us/clarity/setup-and-installation/about-clarity#supported-features)
34+
35+
- 访问录制
36+
- 热点地图
37+
- 事件和漏斗跟踪
38+
- 使用 Copilot 聊天和汇总
39+
40+
引入插件后,全局 `clarity()` 函数会挂载到 `window` 对象,可用于 [高级特性](https://learn.microsoft.com/en-us/clarity/setup-and-installation/clarity-api)
41+
42+
## 选项
43+
44+
### id
45+
46+
- 类型: `string`
47+
- 必填:是
48+
- 详情: Clarity Analytics 项目 ID.
49+
50+
### crossOrigin
51+
52+
- 类型: `string`
53+
- 默认值: `undefined`
54+
- 详情: `crossorigin` 属性,它提供对 `CORS` 的支持。
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
{
2+
"name": "@vuepress/plugin-clarity-analytics",
3+
"version": "2.0.0-rc.112",
4+
"description": "VuePress plugin - clarity-analytics",
5+
"keywords": [
6+
"vuepress-plugin",
7+
"vuepress",
8+
"plugin",
9+
"clarity",
10+
"analytics"
11+
],
12+
"homepage": "https://ecosystem.vuejs.press/plugins/analytics/clarity-analytics.html",
13+
"bugs": {
14+
"url": "https://github.com/vuepress/ecosystem/issues"
15+
},
16+
"repository": {
17+
"type": "git",
18+
"url": "git+https://github.com/vuepress/ecosystem.git",
19+
"directory": "plugins/analytics/plugin-clarity-analytics"
20+
},
21+
"license": "MIT",
22+
"author": {
23+
"name": "Zhao Bin",
24+
"email": "[email protected]",
25+
"url": "https://zhaobc.site"
26+
},
27+
"type": "module",
28+
"exports": {
29+
".": "./lib/node/index.js",
30+
"./client": "./lib/client/index.js",
31+
"./package.json": "./package.json"
32+
},
33+
"main": "./lib/node/index.js",
34+
"types": "./lib/node/index.d.ts",
35+
"files": [
36+
"lib"
37+
],
38+
"scripts": {
39+
"build": "tsc -b tsconfig.build.json",
40+
"bundle": "rollup -c rollup.config.ts --configPlugin esbuild",
41+
"clean": "rimraf --glob ./lib ./*.tsbuildinfo"
42+
},
43+
"dependencies": {
44+
"@vuepress/helper": "workspace:*",
45+
"vue": "catalog:"
46+
},
47+
"peerDependencies": {
48+
"vuepress": "catalog:"
49+
},
50+
"publishConfig": {
51+
"access": "public"
52+
}
53+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { rollupBundle } from '../../../scripts/rollup.js'
2+
3+
export default [
4+
...rollupBundle('node/index'),
5+
...rollupBundle({
6+
base: 'client',
7+
files: ['config', 'index'],
8+
}),
9+
]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './useClarityAnalytics.js'
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import type { ClarityOptions } from '../../shared/index.js'
2+
3+
declare global {
4+
interface Window {
5+
clarity?: (...args: unknown[]) => void
6+
}
7+
}
8+
9+
/**
10+
* Initialize Clarity Analytics tracking
11+
*
12+
* 初始化 Clarity Analytics 追踪
13+
*
14+
* @param options - Clarity Analytics options
15+
*
16+
* @description Injects Clarity tracking script and configures tracking behavior.
17+
* The global `clarity()` function will be available for custom event tracking.
18+
*
19+
* 注入 Clarity 追踪脚本并配置追踪行为。
20+
* 全局 `clarity` 函数可用于自定义事件追踪。
21+
*
22+
* @see https://learn.microsoft.com/en-us/clarity/setup-and-installation/clarity-api
23+
*/
24+
export const useClarityAnalytics = ({
25+
id,
26+
crossOrigin,
27+
}: ClarityOptions): void => {
28+
// avoid duplicated import
29+
if ('clarity' in window) return
30+
31+
const script = document.createElement('script')
32+
script.src = `https://www.clarity.ms/tag/${id}`
33+
script.async = true
34+
if (crossOrigin !== undefined) {
35+
script.crossOrigin = crossOrigin
36+
}
37+
38+
document.head.appendChild(script)
39+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { defineClientConfig } from 'vuepress/client'
2+
import type { ClarityOptions } from '../shared/index.js'
3+
import { useClarityAnalytics } from './composables/index.js'
4+
5+
declare const __CLARITY_OPTIONS__: ClarityOptions
6+
7+
export default defineClientConfig({
8+
setup() {
9+
if (__VUEPRESS_SSR__) return
10+
useClarityAnalytics(__CLARITY_OPTIONS__)
11+
},
12+
})
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './composables/index.js'

0 commit comments

Comments
 (0)