@dipakparmar/docusaurus-plugin-umami

中文文档
3.0.0发布于 2026/07/13MITTypeScriptCommonJS零依赖构建来源已验证近 30 天下载 6240

Umami Analytics plugin for Docusaurus.

原始使用文档
文档目录9 节
  1. ⚠️ production only
  2. Installation
  3. Configuration
  4. Options
  5. Custom event tracking
  6. Data attributes (no JS)
  7. Typed client helpers
  8. Anonymous session grouping ( autoIdentify )
  9. Reference:

📦 docusaurus-plugin-umami

Umami Analytics plugin for Docusaurus.

Version Downloads/week License pkg.pr.new

⚠️ production only

This plugin is always inactive in development and only active in production to avoid polluting the analytics statistics.

Installation

Install the plugin with npm:

npm install --save @dipakparmar/docusaurus-plugin-umami

or with yarn:

yarn add @dipakparmar/docusaurus-plugin-umami

or with pnpm:

pnpm install @dipakparmar/docusaurus-plugin-umami

or with bun:

bun install @dipakparmar/docusaurus-plugin-umami

Configuration

Add the plugin and websiteID and analyticsDomain to your docusaurus.config.js:

module.exports = {
  plugins: [
    [
      "@dipakparmar/docusaurus-plugin-umami",
      /** @type {import('@dipakparmar/docusaurus-plugin-umami').Options} */
      ({
        websiteID: "your-website-id", // Required
        analyticsDomain: "analytics.mydomain.com", // Required
        scriptName: "script.js", // Optional, defaults to script.js
        dataHostURL: "", // Optional
        dataAutoTrack: true, // Optional, defaults to true
        dataDoNotTrack: false, // Optional, defaults to false
        dataCache: false, // Optional, defaults to false
        dataDomains: "", // Optional, comma separated list of domains, *Recommended*
        dataExcludeSearch: false, // Optional, defaults to false
        dataExcludeHash: false, // Optional, defaults to false
        dataTag: "", // Optional
        dataBeforeSend: "beforeSendHandler", // Optional
        enableRecorder: false, // Optional, defaults to false. Loads recorder.js for session replays & heatmaps
      }),
    ],
  ],
};

Options

Accepted fields:

NameTypeDefaultDescription
websiteIDstringRequiredThe unique website ID from your Umami Analytics.
analyticsDomainstringRequiredYour domain of where Umami Analytics is hosted.
scriptNamestringscript.jsName of your custom tracker script.
dataHostURLstringBy default, Umami will send data to wherever the script is located. You can override this to send data to another location.
dataAutoTrackbooleantrueBy default, Umami tracks all pageviews and events for you automatically. You can disable this behavior and track events yourself using the tracker functions.
dataDoNotTrackbooleanfalseConfigure Umami to respect the visitor's Do Not Track setting.
dataCachebooleanfalseIf you get a lot of pageviews from the same user, for example in a forum website, you can cache some data to improve the performance of the tracking script.
dataDomainsstringIf you want the tracker to only run on specific domains, you can add them to your tracker script. This is a comma delimited list of domain names. Helps if you are working in a staging/development environment.
dataExcludeSearchbooleanfalseConfigure the tracker to not record query parameters in the URL.
dataExcludeHashbooleanfalseConfigure the tracker to not record URL hashes.
dataTagstringAdd a tag to your website's data for segmentation (e.g. A/B testing).
dataBeforeSendstringDefine a function that will be called before sending the data. Useful for modifying the data before it's sent to the server.
enableRecorderbooleanfalseLoad Umami's recorder.js script to enable session replays and heatmaps. Which of the two is recorded is toggled per-website in the Umami dashboard.
autoIdentifybooleanfalseAssign a stable anonymous ID (persisted in localStorage) so a visitor's sessions are grouped via distinct IDs. See the privacy note below. Honors Do Not Track / Global Privacy Control.
autoIdentifyStorageKeystringumami.anonymous-idlocalStorage key used to persist the autoIdentify anonymous ID.

Custom event tracking

Once the tracker is loaded you can record custom events two ways.

Data attributes (no JS)

Add data-umami-event (and optional data-umami-event-*) to any element:

<button data-umami-event="Signup" data-umami-event-plan="pro">
  Sign up
</button>

Typed client helpers

Import from the /client entry for a safe, typed API. The helpers no-op during SSR and before the deferred tracker script has loaded, so they are safe to call anywhere:

import {
  track,
  identify,
  useUmami,
} from "@dipakparmar/docusaurus-plugin-umami/client";

// Fire a custom event
track("Signup", { plan: "pro" });

// Assign a distinct id to the session — https://docs.umami.is/docs/distinct-ids
identify({ id: "[email protected]" });

// Inside a React component
function SignupButton() {
  const { track } = useUmami();
  return <button onClick={() => track("Signup", { plan: "pro" })}>Sign up</button>;
}

Both approaches work inside .mdx docs — data-umami-event attributes pass through, and you can import the helpers at the top of the file. Because the helpers no-op during server-side rendering, they are safe to call while Docusaurus prerenders your pages (useUmami() is a hook, so call it at the top of the MDX doc or inside a component, not conditionally).

Tags are set via the dataTag option (the data-tag script attribute), not the tracking API — see Umami tags.

Anonymous session grouping (autoIdentify)

Set autoIdentify: true to have the plugin generate a random ID on the first visit, persist it in localStorage, and identify() it on every load — so a visitor's sessions are grouped together (same browser = same ID). It's opt-in and honors Do Not Track / Global Privacy Control.

⚠️ Privacy. A persistent identifier is personal data under GDPR / ePrivacy and generally requires user consent — enabling this negates Umami's default cookieless, consent-free posture. Using localStorage instead of a cookie does not change this; the legal treatment is the same. You are responsible for obtaining consent where required.

For a consent-gated approach, leave autoIdentify off and call identify() from the /client entry yourself, after your own consent flow.

Reference:

版本与发布记录

@dipakparmar/docusaurus-plugin-umami 共发布 25 个版本,首次发布于 2022/05/31;过去 12 个月发布了 2 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
3.0.0latest2026/07/134 个月前
2.4.02025/12/3010 个月前
2.3.02025/06/111.4 年前
2.2.02025/03/291.6 年前
2.1.72024/11/122 年前
2.1.62024/07/242 年前

关于 @dipakparmar/docusaurus-plugin-umami 的常见问题

@dipakparmar/docusaurus-plugin-umami 是什么?

Umami Analytics plugin for Docusaurus.

如何安装 @dipakparmar/docusaurus-plugin-umami?

在项目目录运行 npm install @dipakparmar/docusaurus-plugin-umami,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@docusaurus/utils-validation(^3.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@dipakparmar/docusaurus-plugin-umami 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@dipakparmar/docusaurus-plugin-umami 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@dipakparmar/docusaurus-plugin-umami 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@dipakparmar/docusaurus-plugin-umami 可以商用吗?

@dipakparmar/docusaurus-plugin-umami 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@dipakparmar/docusaurus-plugin-umami 的下载量有多少?

根据 npm 官方下载统计,@dipakparmar/docusaurus-plugin-umami 在 2026/10/13 – 2026/11/11 这 30 天内被下载 6,240 次,日均约 208 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@dipakparmar/docusaurus-plugin-umami 还在维护吗?

最新版本 3.0.0 发布于 2026/07/13(4 个月前);至今共发布 25 个版本,其中过去 12 个月发布了 2 个;首次发布于 2022/05/31。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。