Lighthouse CLI可直接完成自动化性能审计,无需写JS代码;Node.js模块方式则支持编程调用、定制化分析与测试逻辑集成。

直接用 Lighthouse CLI 命令行工具就能完成自动化性能审计,不需要写 JS 代码也能集成进流程;但如果想在 Node.js 环境中编程调用、做定制化分析或配合测试逻辑,Lighthouse 本身也支持作为模块导入使用。
命令行方式(最常用、推荐优先)
这是真正“开箱即用”的自动化方案,适合本地验证、CI/CD 卡点、批量巡检:
- 全局安装:
npm install -g lighthouse(需 Node.js ≥18) - 基础审计(生成 HTML 报告):
lighthouse https://example.com --output html --output-path=./report.html --view - 仅跑性能模块(轻量快速):
lighthouse https://example.com --only-categories=performance --output=json --output-path=./perf.json - 模拟真实弱网弱机(更贴近用户):
lighthouse https://example.com --throttling.cpuSlowdownMultiplier=4 --throttling.rttMs=150 --throttling.throughputKbps=1638 - 跳过网络节流、保留本地缓存(适合开发环境对比):
--disable-network-throttling --disable-storage-reset
Node.js 模块方式(需编程控制)
当你需要登录态、多页遍历、动态配置、或嵌入到测试脚本中时,用代码调用更灵活:
- 本地安装:
yarn add --dev lighthouse chrome-launcher - 核心逻辑:启动 Chrome 实例 → 注入登录 Cookie 或 Puppeteer 登录 → 调用
lighthouse()函数 → 保存报告 - 关键参数可控:
url、port、options.onlyCategories、settings.emulatedFormFactor、settings.screenEmulation - 示例片段中可设置
chromeFlags: ['--headless=new']实现无界面运行,适合服务器环境
CI/CD 中稳定运行的关键点
自动化不是跑一次就完事,要让它在持续交付中真正起作用:
- 固定 Chrome 版本:Lighthouse 依赖 Chrome,CI 环境建议用
chromium或指定--chrome-flags="--remote-debugging-port=9222" - 避免扩展干扰:加
--no-sandbox --disable-gpu --disable-extensions - 超时与重试:用
--max-wait-for-load=60000防止单页卡死阻塞流水线 - 结果断言:提取 JSON 报告中的
categories.performance.score或audits.largest-contentful-paint.numericValue,低于阈值就exit 1 - 推荐搭配 LHCI(Lighthouse CI):
lhci autorun自动上传、比对、失败告警,支持 GitHub PR 评论自动贴分
注意几个实际限制
Lighthouse 是实验室数据,不是 RUM(真实用户监控),但它足够用于回归验证和上线前守门:
- 无法审计需登录后才展示的内容,除非你提前注入 session 或用 Puppeteer 预处理
- 单页应用(SPA)首次加载能测准,但路由切换后的性能需用 Timespan 模式或手动录制 trace
- 报告中的建议是通用规则,比如“压缩图片”,具体怎么压、压到多少 KB,得结合项目基建来落地
- 分数只是参考,重点看诊断项(Diagnostics)里列出的资源路径、JS 执行时长、布局偏移元素等可操作线索











