@alwaysmeticulous/recorder-plugin

中文文档
2.346.0发布于 2026/10/06ISCES Module构建来源已验证近 30 天下载 39.5万

Vite, Webpack, Rspack, Rsbuild, 和 Nuxt 的 Meticulous 插件, 将记录器脚本注入 HTML 头部, 外加一个 Vite 插件, 为样式表覆盖发送 CSS 源图.

中文使用文档
文档目录5 节
  1. 安装
  2. 使用量
  3. 选项
  4. 记录器装入时控制
  5. 替换手工添加的占位符

@ alwaysmeticulous/recorder-plugin (英语)

注入此选项的捆绑插件 金属录音机 脚本进入 <head> 您的应用程序的 HTML, 每集有一个切入点 支持捆绑/框架.

默认情况下,记录器只在开发建设期间被注入—— 匹配 Meticulous 的建议, 将真实的会话记录在进行中或 通过明确的选择进入生产.

建于顶上 unplugin@3 财务报告和审定财务报表 tsdown仅限无害环境管理,要求节点20.19+.

安装

npm install @alwaysmeticulous/recorder-plugin --save-dev
# or with yarn
yarn add -D @alwaysmeticulous/recorder-plugin
# or with pnpm
pnpm add -D @alwaysmeticulous/recorder-plugin

使用量

维特
// vite.config.ts
import meticulous from "@alwaysmeticulous/recorder-plugin/vite";

export default defineConfig({
  plugins: [
    meticulous({
      recordingToken: "<your-recording-token>",
    }),
  ],
});
网络软件包
// webpack.config.mjs
import meticulous from "@alwaysmeticulous/recorder-plugin/webpack";

export default {
  plugins: [meticulous({ recordingToken: "<your-recording-token>" })],
};

该插件与 html-webpack-plugin 何时 存在,否则会回到重写任何排放物 .html 资产.

包装
// rspack.config.mjs
import meticulous from "@alwaysmeticulous/recorder-plugin/rspack";

export default {
  plugins: [meticulous({ recordingToken: "<your-recording-token>" })],
};
建设

更喜欢专用的 Rsbuild 条目, 它钩入 Rsbuild 的 modifyHTML API : (英语)

// rsbuild.config.ts
import { defineConfig } from "@rsbuild/core";
import meticulous from "@alwaysmeticulous/recorder-plugin/rsbuild";

export default defineConfig({
  plugins: [meticulous({ recordingToken: "<your-recording-token>" })],
});

您也可以通过 rspack 插件 tools.rspack 如果你需要的话 用其他只使用 rspack 的插件来作曲 :

// rsbuild.config.ts
import { defineConfig } from "@rsbuild/core";
import meticulous from "@alwaysmeticulous/recorder-plugin/rspack";

export default defineConfig({
  tools: {
    rspack: {
      plugins: [meticulous({ recordingToken: "<your-recording-token>" })],
    },
  },
});
坚果
// nuxt.config.ts
export default defineNuxtConfig({
  modules: [
    [
      "@alwaysmeticulous/recorder-plugin/nuxt",
      { recordingToken: "<your-recording-token>" },
    ],
  ],
});

Nuxt 模块通过 nuxt.options.app.head.script, (中文(简体) ), 供入硝基的管道 并正确工作 纳克斯特用的是哪个.

选项

import type { Options } from "@alwaysmeticulous/recorder-plugin";
选项类型默认说明
recordingTokenstring (必须)—— 说你的默契录音 被确认为 data-recording-token 在注射时 <script>。 。 。 .
enabled"development" | "always" | "never" | (ctx) => boolean"development"何时入入入. "development" 仅在开发建设期间注入( Vite) command === "serve" 或网络包装/软件包 mode !== "production") (中文(简体) ). 传出全控功能.
inject"auto" | "replace""auto""auto" 预留新 <script> 作为第一个孩子 <head>。 。 。 . "replace" 交换占位符脚本标记(见下文).
placeholderAttributestring"data-meticulous"当 inject: "replace"。 。 。 .
snippetUrlstring"https://snippet.meticulous.ai/v1/meticulous.js"覆盖片段 URL .
attributesRecord<string, string | boolean | null | undefined>{}附加属性于 <script> 标记(例如). nonce) (中文(简体) ). true 发出布尔属性; false编号 :null编号 :undefined 跳过。 覆盖任何默认属性,包括 data-is-production-environment。 。 。 .

插件总是发出 data-is-production-environment="true" 或者说 data-is-production-environment="false" 在注射时 <script> 基于 捆绑器的检测模式( Vite) command === "build" && mode === "production", (中文(简体) ), 网络包装/软件包 mode === "production") (中文(简体) ). 通过它覆盖 attributes 狦 需要不同的行为:

meticulous({
  recordingToken: "<your-recording-token>",
  attributes: {
    "data-is-production-environment":
      process.env.MY_ENV === "prod" ? "true" : "false",
  },
});

记录器装入时控制

meticulous({
  recordingToken: "<your-recording-token>",
  // Always inject — useful in staging.
  enabled: "always",
});

meticulous({
  recordingToken: "<your-recording-token>",
  // Custom predicate.
  enabled: (ctx) => ctx.framework === "vite" && ctx.mode !== "test",
});

上游收到一个 EnabledContext数字 :

interface EnabledContext {
  framework: "vite" | "webpack" | "rspack";
  mode?: string; // Vite mode / webpack mode / NODE_ENV fallback
  command?: "serve" | "build"; // Vite-only
  isProduction: boolean;
}

替换手工添加的占位符

如果你宁愿控制剧本的所在 index.html,添加一个 占位符和开关 inject 改为 "replace"数字 :

<!-- index.html -->
<head>
  <script data-meticulous></script>
  <!-- ... -->
</head>
meticulous({
  recordingToken: "<your-recording-token>",
  inject: "replace",
  // placeholderAttribute defaults to "data-meticulous"
});

如果找不到占位符,插件会倒回 "auto" 注射 并发出警告.

版本与发布记录

@alwaysmeticulous/recorder-plugin 共发布 11 个版本,首次发布于 2026/04/29;过去 12 个月发布了 11 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.346.0latest2026/10/0630 天前
2.338.02026/09/111 个月前
2.337.12026/09/081 个月前
2.337.02026/09/071 个月前
2.333.12026/08/262 个月前
2.293.02026/06/134 个月前

关于 @alwaysmeticulous/recorder-plugin 的常见问题

@alwaysmeticulous/recorder-plugin 是什么?

Vite, Webpack, Rspack, Rsbuild, 和 Nuxt 的 Meticulous 插件, 将记录器脚本注入 HTML 头部, 外加一个 Vite 插件, 为样式表覆盖发送 CSS 源图.

如何安装 @alwaysmeticulous/recorder-plugin?

在项目目录运行 npm install @alwaysmeticulous/recorder-plugin,或使用 pnpm add / yarn add / bun add。

@alwaysmeticulous/recorder-plugin 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/alwaysmeticulous__recorder-plugin 是否存在。

@alwaysmeticulous/recorder-plugin 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@alwaysmeticulous/recorder-plugin 需要什么版本的 Node.js?

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

@alwaysmeticulous/recorder-plugin 可以商用吗?

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

@alwaysmeticulous/recorder-plugin 的下载量有多少?

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

@alwaysmeticulous/recorder-plugin 还在维护吗?

最新版本 2.346.0 发布于 2026/10/06(30 天前);至今共发布 11 个版本,其中过去 12 个月发布了 11 个;首次发布于 2026/04/29。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。