Lighthouse CLI 深度解析:定制你的专属性能测试
为什么选择 Lighthouse CLI?
安装与基本使用
常用命令行选项详解
1. --view:查看报告
2. --output:指定输出格式和路径
3. --only-categories:指定要测试的类别
4. --emulated-form-factor:模拟设备类型
5. --throttling:模拟网络环境
6. --extra-headers:添加额外的 HTTP 请求头
7. --chrome-flags:设置 Chrome 启动参数
8. --config-path: 使用自定义的配置文件
9. --budget-path:性能预算
实际应用案例
案例一:持续集成中的性能监控
案例二:批量测试网站所有页面
案例三:自定义网络环境测试
总结
Lighthouse,这个名字你可能早就听过,作为 Google 出品的一款强大的网站性能测试工具,它早已成为众多开发者手中的利器。除了在 Chrome 开发者工具中直接使用外,Lighthouse 还提供了强大的命令行界面 (CLI),让我们可以更灵活、更深入地定制性能测试,满足各种各样的需求。
今天咱们就来聊聊 Lighthouse CLI,看看它到底有哪些“黑科技”,又该如何玩转这些命令,让你的网站性能测试更上一层楼。
为什么选择 Lighthouse CLI?
你可能会问,Chrome 开发者工具里不是已经有 Lighthouse 了吗,为什么还要用 CLI?
问得好!CLI 的优势主要体现在以下几个方面:
- 自动化测试: CLI 可以轻松集成到你的持续集成/持续部署 (CI/CD) 流程中,实现自动化性能测试,无需手动干预。
- 批量测试: 一次性测试多个页面,甚至整个网站,效率更高。
- 自定义配置: CLI 提供了丰富的配置选项,可以让你根据实际需求定制测试参数,获得更精准的测试结果。
- 无头模式 (Headless): 可以在没有图形界面的服务器环境下运行,方便部署。
- 更深入的控制: 可以更精细地控制测试的各个环节,例如模拟不同的网络环境、设备类型等。
总之,如果你想更深入地了解和控制网站性能测试,Lighthouse CLI 绝对是你的不二之选。
安装与基本使用
在开始之前,我们需要先安装 Lighthouse CLI。最简单的方法是通过 npm (Node.js 包管理器):
npm install -g lighthouse
安装完成后,就可以在命令行中输入 lighthouse
命令来验证是否安装成功。如果看到 Lighthouse 的帮助信息,就说明安装成功了。
最基本的使用方法是直接在命令行中输入 lighthouse
加上你要测试的网址:
lighthouse https://www.example.com
Lighthouse 会自动打开一个 Chrome 实例 (默认情况下),对目标网址进行测试,并在测试完成后生成一份 HTML 报告。
常用命令行选项详解
Lighthouse CLI 提供了大量的命令行选项,可以让你对测试进行各种各样的定制。下面我们就来详细介绍一些常用的选项。
1. --view
:查看报告
默认情况下,Lighthouse 会在测试完成后自动打开生成的 HTML 报告。如果你不想自动打开,可以使用 --no-view
选项:
lighthouse https://www.example.com --no-view
之后,你可以使用 --view
选项手动打开报告:
lighthouse --view
2. --output
:指定输出格式和路径
Lighthouse 默认会生成 HTML 格式的报告。你可以使用 --output
选项指定输出格式,支持的格式包括 html
、json
和 csv
。
lighthouse https://www.example.com --output json --output-path ./report.json
上面的命令会将测试结果输出为 JSON 格式,并保存到 ./report.json
文件中。 你也可以同时输出多种格式:
lighthouse https://www.example.com --output html --output json --output-path ./report
上面的命令会输出report.html 和 report.json.
3. --only-categories
:指定要测试的类别
Lighthouse 默认会测试所有类别,包括性能 (Performance)、可访问性 (Accessibility)、最佳实践 (Best Practices)、SEO 和渐进式 Web 应用 (PWA)。你可以使用 --only-categories
选项指定要测试的类别,多个类别之间用逗号分隔。
lighthouse https://www.example.com --only-categories performance,accessibility
上面的命令将只测试性能和可访问性两个类别。
4. --emulated-form-factor
:模拟设备类型
Lighthouse 默认会模拟移动设备进行测试。你可以使用 --emulated-form-factor
选项指定要模拟的设备类型,可选值包括 mobile
和 desktop
。
lighthouse https://www.example.com --emulated-form-factor desktop
上面的命令将模拟桌面设备进行测试。
5. --throttling
:模拟网络环境
Lighthouse 默认会使用一个预设的节流配置来模拟移动网络环境。你可以使用 --throttling
选项自定义网络节流参数,或者使用预设的配置。
lighthouse https://www.example.com --throttling.cpuSlowdownMultiplier=4
上面命令模拟了CPU减速4倍的情况。
6. --extra-headers
:添加额外的 HTTP 请求头
有些网站可能需要特定的 HTTP 请求头才能正常访问。你可以使用 --extra-headers
选项添加额外的请求头。
lighthouse https://www.example.com --extra-headers "{\"Cookie\": \"name=value\"}"
上面的命令将添加一个名为 Cookie
的请求头,值为 name=value
。
7. --chrome-flags
:设置 Chrome 启动参数
你可以使用 --chrome-flags
选项设置 Chrome 启动参数,例如禁用某些 Chrome 功能或启用实验性功能。
lighthouse https://www.example.com --chrome-flags="--headless --disable-gpu"
上面的命令将以无头模式启动 Chrome,并禁用 GPU 加速。
8. --config-path
: 使用自定义的配置文件
Lighthouse 允许通过一个 JSON 配置文件来定义更复杂的测试设置。例如:
// config.js module.exports = { extends: 'lighthouse:default', settings: { onlyCategories: ['performance'], }, };
然后运行:
lighthouse https://example.com --config-path=./config.js
9. --budget-path
:性能预算
性能预算可以帮助你设定性能指标的阈值,如果测试结果超过了预算,Lighthouse 会给出警告。
// budget.json [ { "resourceType": "script", "budget": 200 }, { "resourceType": "image", "budget": 300 } ]
然后运行:
lighthouse https://example.com --budget-path=./budget.json
实际应用案例
说了这么多,咱们来举几个实际的例子,看看 Lighthouse CLI 如何在实际开发中发挥作用。
案例一:持续集成中的性能监控
假设你正在开发一个电商网站,你希望在每次代码提交后都能自动进行性能测试,以确保网站性能不会出现倒退。你可以在你的 CI/CD 流程中添加一个 Lighthouse 测试步骤,例如使用 Jenkins 或 GitLab CI。
# .gitlab-ci.yml stages: - test performance_test: stage: test image: node:latest script: - npm install -g lighthouse - lighthouse https://your-website.com --output json --output-path ./report.json --only-categories performance artifacts: paths: - ./report.json
上面的配置会在每次代码提交后自动运行 Lighthouse 测试,并将测试结果保存为 JSON 格式的报告。你可以在 CI/CD 平台的界面上查看测试结果,或者将测试结果发送到你的监控系统。
案例二:批量测试网站所有页面
假设你有一个包含多个页面的网站,你想一次性测试所有页面的性能。你可以编写一个脚本来批量运行 Lighthouse 测试。
# test_all_pages.sh pages=( "https://your-website.com/" "https://your-website.com/products" "https://your-website.com/about" ) for page in "${pages[@]}" do lighthouse "$page" --output json --output-path "./reports/$page.json" --only-categories performance done
上面的脚本会遍历 pages
数组中的所有网址,分别运行 Lighthouse 测试,并将测试结果保存到 ./reports
目录下。
案例三:自定义网络环境测试
假设你想测试你的网站在不同网络环境下的性能表现,例如 3G、4G 和 Wi-Fi。你可以使用 --throttling-method
和 --throttling
选项来模拟不同的网络环境。
# 3G lighthouse https://your-website.com --throttling-method=devtools --throttling.rttMs=200 --throttling.throughputKbps=780 --throttling.requestLatencyMs=280 --throttling.downloadThroughputKbps=700 --throttling.uploadThroughputKbps=330 --throttling.cpuSlowdownMultiplier=4 # 4G lighthouse https://your-website.com --throttling-method=devtools --throttling.rttMs=150 --throttling.throughputKbps=1600 --throttling.requestLatencyMs=200 --throttling.downloadThroughputKbps=1400 --throttling.uploadThroughputKbps=750 --throttling.cpuSlowdownMultiplier=2
通过修改参数,即可模拟不同网络环境。
总结
Lighthouse CLI 是一个功能强大、灵活可定制的网站性能测试工具。通过熟练掌握 CLI 的各种命令行选项,你可以轻松实现自动化测试、批量测试、自定义配置等功能,让你的网站性能测试更上一层楼。希望这篇文章能帮助你更好地了解和使用 Lighthouse CLI,让你的网站性能更出色!
当然,Lighthouse 还有更多的“隐藏技能”等待你去发掘。 比如使用不同的审计 (audits) 和收集器 (gatherers) 等,多查阅官方文档,你会发现更多惊喜!还在等什么,赶紧动手试试吧!