Chrome devtools二次开发准备:获取源码和编译

在 Ubuntu 上获取并编译 Google Chrome DevTools Frontend 源码,有两种主流方式:

  1. 直接下载官方已经打好包的 npm 包(最快,免编译)
  2. 用 Google 的 depot_tools 完整拉取 Chromium 源码并自行编译(最完整,可二次开发)

下面分别给出步骤,你可以按需求二选一。


一、只想"拿到就用"------用 npm 包(免编译) 官方已经把每天构建好的前端文件发布到 npm,装完就能跑。

  1. 安装

    bash 复制代码
    # 装包(版本号每天更新,可去 npm 查最新)
    npm i -g chrome-devtools-frontend@latest
    # 进入包目录
    cd $(npm root -g)/chrome-devtools-frontend
  2. 起静态服务验证

    bash 复制代码
    # 任意静态服务器均可
    npx http-server . -p 8081

    浏览器访问

    bash 复制代码
    http://localhost:8081/front_end/devtools_app.html?ws=localhost:9229

    只要 9229 端口有符合 CDP 的 WebSocket 服务,就能正常调试 。


二、需要"源码级二次开发"------完整拉取并编译 适合想改面板、加功能、追最新主干代码的同学。

  1. 系统依赖(Ubuntu 22.04 示例)

    bash 复制代码
    sudo apt update
    sudo apt install git python3 python3-venv pkg-config \
         build-essential ninja-build nodejs npm curl
  2. 准备 depot_tools(Google 的构建工具链)

    bash 复制代码
    git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
    echo 'export PATH=$PATH:'"$(pwd)/depot_tools" >> ~/.bashrc
    source ~/.bashrc
  3. 拉取 DevTools Frontend 源码(约 1-2 GB)

    bash 复制代码
    mkdir devtools && cd devtools
    fetch devtools-frontend     # 这条命令来自 depot_tools
    cd devtools-frontend
  4. 同步依赖并生成构建文件

    bash 复制代码
    gclient sync                # 第一次会下载 Node、Java 运行时等,需科学上网
    gn gen out/Default          # 生成 Ninja 构建文件
  5. 编译(Ubuntu 上约 5-10 分钟,视 CPU 而定)

    bash 复制代码
    autoninja -C out/Default    # 等价于 ninja -C out/Default,但自动并行

    产物在

    sql 复制代码
    out/Default/gen/front_end/

    即为可运行的 DevTools 前端 。

  6. 本地预览

    bash 复制代码
    cd out/Default/gen/front_end
    npx http-server . -p 8081

    浏览器打开

    bash 复制代码
    http://localhost:8081/devtools_app.html?ws=localhost:9229
  7. 让本地 Chrome 默认使用你编译的版本

    关闭所有 Chrome 后启动

    bash 复制代码
    google-chrome --custom-devtools-frontend=file://$(pwd)/out/Default/gen/front_end

    以后按 F12 就会直接加载你改过的面板 。


三、常见问题速查

  • 网络超时:
    fetch / gclient 阶段需要访问 Google 服务器,Ubuntu 下可给终端走代理

    bash 复制代码
    export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890
  • 编译报错缺 header:

    一般把 build-essential 和 pkg-config 补齐即可;若仍缺 java/javac,可再装 openjdk-11-jdk。

  • 只想定时拉最新官方构建,而不自己编:

    关注 GitHub 仓库 aryasaatvik/chrome-devtools-frontend-build 的 releases,每周自动更新已编好的包,下载即用 。


一句话总结

  • "快速体验" → npm i -g chrome-devtools-frontend 即可;
  • "深度定制" → Ubuntu 装好 depot_tools → fetch devtools-frontend → gn gen → autoninja,完事后 out/Default/gen/front_end 就是你的专属调试器前端。
相关推荐
LucianaiB3 小时前
【元宝搜索开发者征文大赛】AI时代,学得慢就不用学?用元宝搜索打造一个教程保质期,确保每一个教程符合你的现状
前端·人工智能·ai编程
excel3 小时前
JavaScript 对象池:减少高频对象创建与 GC 压力
前端
陈随易5 小时前
纯 Go 写的 JS 引擎,跑分超过了 C 语言的 QuickJS
前端·后端·程序员
子兮曰7 小时前
Chrome 权限元素实战:144 与 151 的渐进增强写法
前端·javascript·chrome
IT_陈寒7 小时前
Redis连接池泄漏那次,我差点把生产环境搞崩了
前端·人工智能·后端
强尼银手7 小时前
我花一天做了个格斗游戏原型,判定全对,然后被「美术」劝退了
前端·javascript
石小石Orz7 小时前
AI 正在蚕食我们的编码能力
前端·后端·算法
陈随易8 小时前
专注飞机 FocusFlight,两个人把番茄钟做成了一趟航班
前端·后端·程序员
总要学点什么8 小时前
第98篇:三维特效-材质线效果——给一条线换十种材质,虚线的图案只填了一半
开发语言·前端·javascript·ecmascript·gis·webgl·材质
10share8 小时前
基于大模型的 i18n 方案:把中文原文当 Key,轻松搞定多语言维护
前端·vue.js