# @alwaysmeticulous/recorder-plugin 中文文档

规范地址：https://npmcn.com/package/%40alwaysmeticulous/recorder-plugin/

版本：2\.346\.0
npm 元数据更新时间：2026-10-06T15:32:45.813Z
中文译文更新时间：2026-11-05T23:07:34.375Z
软件包许可：ISC

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40alwaysmeticulous/recorder-plugin
原文对照：https://npmcn.com/package/%40alwaysmeticulous/recorder-plugin/?lang=original
项目主页：https://github.com/alwaysmeticulous/meticulous-sdk
源码仓库：https://github.com/alwaysmeticulous/meticulous-sdk

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：168 kB，47 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=20\.19\.0
- 运行依赖：2 个
- peer 依赖：vite \>=5，webpack ^5，@nuxt/kit ^3，@rspack/core ^1，@rsbuild/core ^1
- 首次发布：2026-04-29T10:58:25.534Z
- 最新版本发布：2026-10-06T15:32:45.435Z
- 近 30 天下载量：395097（2026-10-06 至 2026-11-04，npm 官方下载统计）
- 已发布版本数：11（近 12 个月 11 个）

## 中文简介

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

## 安装

```sh
npm install @alwaysmeticulous/recorder-plugin
```

也可以使用：`pnpm add @alwaysmeticulous/recorder-plugin`、`yarn add @alwaysmeticulous/recorder-plugin`、`bun add @alwaysmeticulous/recorder-plugin`

## README

# @ alwaysmeticulous/recorder-plugin (英语)

注入此选项的捆绑插件 [金属录音机](https://app.meticulous.ai/docs/how-to/recorder-script) 脚本进入 `<head>` 您的应用程序的 HTML, 每集有一个切入点 支持捆绑/框架.

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

> 建于顶上 [`unplugin@3`](https://github.com/unjs/unplugin) 财务报告和审定财务报表 [`tsdown`](https://tsdown.dev/)仅限无害环境管理,要求节点20.19+.

## 安装

```shell
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
```

## 使用量

维特

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

export default defineConfig({
  plugins: [
    meticulous({
      recordingToken: "<your-recording-token>",
    }),
  ],
});
```
网络软件包

```js
// webpack.config.mjs
import meticulous from "@alwaysmeticulous/recorder-plugin/webpack";

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

该插件与 [`html-webpack-plugin`](https://github.com/jantimon/html-webpack-plugin) 何时 存在,否则会回到重写任何排放物 `.html` 资产.

包装

```js
// rspack.config.mjs
import meticulous from "@alwaysmeticulous/recorder-plugin/rspack";

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

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

```ts
// 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 的插件来作曲 :

```ts
// 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>" })],
    },
  },
});
```
坚果

```ts
// nuxt.config.ts
export default defineNuxtConfig({
  modules: [
    [
      "@alwaysmeticulous/recorder-plugin/nuxt",
      { recordingToken: "<your-recording-token>" },
    ],
  ],
});
```

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

## 选项

```ts
import type { Options } from "@alwaysmeticulous/recorder-plugin";
```

| 选项 | 类型 | 默认 | 说明 |
| --- | --- | --- | --- |
| `recordingToken` | `string` (必须) | —— 说 | 你的默契录音 被确认为 `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"` 交换占位符脚本标记(见下文). |
| `placeholderAttribute` | `string` | `"data-meticulous"` | 当 `inject: "replace"`。 。 。 . |
| `snippetUrl` | `string` | `"https://snippet.meticulous.ai/v1/meticulous.js"` | 覆盖片段 URL . |
| `attributes` | `Record<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` 狦 需要不同的行为:

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

### 记录器装入时控制

```ts
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`数字 :

```ts
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"`数字 :

```html
<!-- index.html -->
<head>
  <script data-meticulous></script>
  <!-- ... -->
</head>
```

```ts
meticulous({
  recordingToken: "<your-recording-token>",
  inject: "replace",
  // placeholderAttribute defaults to "data-meticulous"
});
```

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

## 常见问题

### @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 和提交记录判断。

