@browser-echo/vite

中文文档
1.1.1发布于 2026/05/12TypeScriptES Module近 30 天下载 6.5万

用于将浏览器控制台日志流到您的 Dev 终端的 Vite 插件, 上面有颜色、 堆栈痕迹和可选的文件记录 .

中文使用文档
文档目录22 节
  1. 目录
  2. 特征
  3. 安装
  4. 用法实例
  5. Vue + 维特
  6. 反应 + Vite
  7. TanStack 启动
  8. 配置选项
  9. 安装 MCP 服务器
  10. 自动发现( 默认)
  11. 手动配置
  12. 网络正文片断( opt- in)
  13. 禁用 MCP
  14. 环境变量
  15. 文件日志( 只有图像特性)
  16. 按标签分割文件日志
  17. 如何运作
  18. 依赖关系
  19. 解决问题
  20. 作者
  21. 许可证
  22. 链接

@ 浏览器- echo/ vite

用于将浏览器控制台日志流到您的 Dev 终端的 Vite 插件, 上面有颜色、 堆栈痕迹和可选的文件记录 .

这个软件包提供了一个Vite插件,包括dev中件和一个虚拟模块,在开发过程中将浏览器控制台日志转发到您的终端. 与React,Vue,TanStack Start合作,以及任何基于Vite的项目.

目录

特征

  • 带有内置 dev 中间软件的 Vite 插件
  • 自动客户端初始化虚拟模块
  • 可选文件记录( 与 Vite 提供者独有)
  • 彩色终端输出
  • 多个模式的完整堆栈跟踪支持
  • 与 index.html 或服务器端提供的应用程序
  • 可选网络抓取( opt- in): 抓取, XMLHttp Request, WebSocket
  • 可选请求/应答机身片段(可选入),安全截取

安装

npm install -D @browser-echo/vite
# or
pnpm add -D @browser-echo/vite

用法实例

Vue + 维特

npm install -D @browser-echo/vite
# or
pnpm add -D @browser-echo/vite
// vite.config.ts
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import browserEcho from '@browser-echo/vite';

export default defineConfig({
  plugins: [
    vue(),
    browserEcho({
      // Optional configuration
      stackMode: 'condensed',
      colors: true,
    }),
  ],
});

就这样! 您的 Vue app 将在开发期间将控制台日志流到您的终端 .

反应 + Vite

npm install -D @browser-echo/vite
# or
pnpm add -D @browser-echo/vite
// vite.config.ts
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import browserEcho from '@browser-echo/vite';

export default defineConfig({
  plugins: [
    react(),
    browserEcho({
      // Optional configuration
      stackMode: 'condensed',
      colors: true,
    }),
  ],
});

您的回放应用程序将在开发期间将控制台日志流到您的终端 .

TanStack 启动

// vite.config.ts
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import browserEcho from '@browser-echo/vite';

export default defineConfig({
  plugins: [
    react(),
    browserEcho({
      injectHtml: false, // Important: TanStack Start doesn't use index.html
      stackMode: 'condensed',
      fileLog: { enabled: true },
    }),
  ],
});

对 TanStack 启动很重要: 自从TanStack以来 开始制作,没有 index.html,需要设置 injectHtml: false 并手动在路由器中导入虚拟模块 :

// src/router.tsx
if (import.meta.env.DEV && typeof window !== 'undefined') {
  void import('virtual:browser-echo');
}

配置选项

interface BrowserEchoViteOptions {
  enabled?: boolean;                 // default: true (dev only)
  route?: `/${string}`;              // default: '/__client-logs'
  include?: BrowserLogLevel[];       // default: ['log','info','warn','error','debug']
  preserveConsole?: boolean;         // default: true
  tag?: string;                      // default: '[browser]'
  colors?: boolean;                  // default: true
  injectHtml?: boolean;              // default: true
  stackMode?: 'none' | 'condensed' | 'full'; // default: 'condensed'
  showSource?: boolean;              // default: true
  batch?: { size?: number; interval?: number }; // default: 20 / 300ms
  truncate?: number;                 // default: 10_000 chars
  fileLog?: { enabled?: boolean; dir?: string; split?: boolean }; // default: disabled
  mcp?: { 
    url?: string;                    // MCP server base URL (auto-discovered if not set)
    routeLogs?: `/${string}`;        // MCP logs route (default: '/__client-logs')
    suppressTerminal?: boolean;      // Suppress terminal output when forwarding (default: auto)
    headers?: Record<string,string>; // Custom headers for MCP requests
  };
  discoverMcp?: boolean;             // Enable MCP auto-discovery (default: true)
  discoveryRefreshMs?: number;       // Discovery refresh interval (default: 30000)
  networkLogs?: {
    enabled?: boolean;
    captureFull?: boolean;
    bodies?: {
      request?: boolean;
      response?: boolean;
      maxBytes?: number;                       // default 2048 bytes
      allowContentTypes?: string[];            // default ['application/json','text/','application/x-www-form-urlencoded']
      prettyJson?: boolean;                    // default true
    };
  }; // default disabled
}

安装 MCP 服务器

Vite插件自动发现并转发日志到MCP服务器. 多数情况下不需要配置!

📖 首先,设置 MCP 服务器 ,然后配置下面的框架选项.

自动发现( 默认)

browserEcho({
  // MCP auto-discovery enabled by default
  // Logs forward to MCP when detected, terminal output suppressed
})

手动配置

browserEcho({
  mcp: {
    url: 'http://127.0.0.1:5179',           // Explicit MCP base URL
    suppressTerminal: false,                 // Keep terminal output even when forwarding
    headers: { 'Authorization': 'Bearer ...' } // Custom headers if needed
  }
})

网络正文片断( opt- in)

browserEcho({
  networkLogs: {
    enabled: true,
    bodies: {
      request: true,
      response: true,
      maxBytes: 2048,
      allowContentTypes: ['application/json','text/','application/x-www-form-urlencoded'],
      prettyJson: true
    }
  }
})

输出示例 :

[NETWORK] [POST] [/api/users] [200] [18ms]
    req: {"name":"Ada"}
    res: { "id": 1, "name": "Ada" }

禁用 MCP

browserEcho({
  discoverMcp: false,  // Disable auto-discovery
  mcp: { url: '' }     // Disable explicit MCP
})

环境变量

  • BROWSER_ECHO_MCP_URL=http://127.0.0.1:5179/mcp 设置 MCP 服务器 URL
  • BROWSER_ECHO_SUPPRESS_TERMINAL=1 - 强制压制终端输出
  • BROWSER_ECHO_SUPPRESS_TERMINAL=0 — 部队显示终端输出
  • BROWSER_ECHO_FILE_LOG=true ——启用 MCP- side 文件记录( 最小服务器)
  • BROWSER_ECHO_SPLIT_LOGS=true ——将日志分解为日志/前端对齐

发现行为

发现顺序 : BROWSER_ECHO_MCP_URL 港口 5179(dev) 当地项目 .browser-echo-mcp.json。 。 。 .

文件日志( 只有图像特性)

启用可选文件记录将浏览器日志写入磁盘 :

browserEcho({
  fileLog: { 
    enabled: true, 
    dir: 'logs/frontend' // default: 'logs/frontend'
  }
})

按标签分割文件日志

将单独的文件写入每个标签子目录(例如. logs/network/dev-*.log:

browserEcho({
  fileLog: {
    enabled: true,
    dir: 'logs',
    split: true
  },
  networkLogs: { enabled: true }
})

例如,这产生了:

  • logs/browser/dev-YYYY-MM-DDTHH-MM-SS.log
  • logs/network/dev-YYYY-MM-DDTHH-MM-SS.log
  • logs/worker/dev-YYYY-MM-DDTHH-MM-SS.log

如何运作

插件 :

  1. 添加 dev 中间软件处理 POST 请求 /__client-logs
  2. 提供虚拟模块 virtual:browser-echo 初始化客户端
  3. 可选地将虚拟模块导入到您的 index.html
  4. 用颜色和堆放痕迹打印格式化日志到终端

依赖关系

此软件包取决于 @ 浏览器- echo/ 核心 用于客户端功能.

解决问题

  • 没有日志: 确保添加插件并同时添加其中之一 index.html 已存在或您手动导入虚拟模块
  • 太大声了: 限制 include: ['warn','error'] 和使用情况 stackMode: 'condensed'
  • 浏览器中的复制日志设置 preserveConsole: false

作者

凯文克恩

许可证

麻省理工学院

版本与发布记录

@browser-echo/vite 共发布 13 个版本,首次发布于 2025/08/12;过去 12 个月发布了 1 个版本。

版本发布日期距今
1.1.1latest2026/05/125 个月前
1.1.02025/09/231.1 年前
1.1.0-alpha.1alpha2025/09/141.1 年前
1.1.0-alpha.02025/09/141.1 年前
1.0.22025/09/141.1 年前
1.0.12025/08/251.2 年前

关于 @browser-echo/vite 的常见问题

@browser-echo/vite 是什么?

用于将浏览器控制台日志流到您的 Dev 终端的 Vite 插件, 上面有颜色、 堆栈痕迹和可选的文件记录 .

如何安装 @browser-echo/vite?

在项目目录运行 npm install @browser-echo/vite,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:vite(>=4.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@browser-echo/vite 支持 TypeScript 吗?

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

@browser-echo/vite 支持 ESM 还是 CommonJS?

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

@browser-echo/vite 可以商用吗?

@browser-echo/vite 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

@browser-echo/vite 的下载量有多少?

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

@browser-echo/vite 还在维护吗?

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