怎么在VS Code 调试vue3 源码

总结一下怎么在VS Code 调试vue3 源码

  • 克隆vue3源码到本地
  • 在源码根目录安装依赖 把项目跑起来 生成packages/vue/dist/vue.global.js文件
  • 在packages/vue/examples/ 下随便找个文件 打上断点
  • 安装Live Server插件 把我们打上断点的文件在浏览器打开
  • 在.vscode文件夹下配置launch.json
  • 点击VS Code的Run and Debug图标 就可以进入了

我们开始吧~

克隆vue3源码到本地

去Github克隆源码,克隆后我们用VS Code打开。

bash 复制代码
git clone https://github.com/vuejs/core
在源码根目录安装依赖 把项目跑起来
bash 复制代码
pnpm i

如果puppeteer没安装成功 可能要多试几次 我用的pnpm 后面重新安装 那些依赖全部可以复用(reused)

把项目跑起来

bash 复制代码
npm/pnpm run dev

会生成packages/vue/dist/vue.global.js

在packages/vue/examples/ 下随便找个文件 打上断点

我们找packages/vue/examples/classic/commits.html 在如图位置打上断点

commits.html 这个文件引入了我们刚才构建出来的vue.global.js文件,所以打断点能进入对应的源码

html 复制代码
<script src="../../dist/vue.global.js"></script>
安装Live Server插件 把我们打上断点的文件在浏览器打开

安装好插件后,打开文件的上下文菜单 可以看到Open with Live Server

这样我们就可以打开我们的classic/commits.html 文件了 是用服务器打开的

在.vscode文件夹下配置launch.json

注意这里的URL是我们的要调试URL路径

json 复制代码
{
  "version": "0.2.0",
  "configurations": [
    {"type":"node","request":"launch","name":"Run parser","runtimeExecutable":"parser","cwd":"${workspaceFolder}/packages/reactivity-transform/node_modules/@vue/compiler-core","args":[]},
    {
      "type": "chrome",
      "request": "launch",
      "name": "调试Vue源码",
      "url": "http://localhost:5500/packages/vue/examples/classic/commits.html",
      "webRoot": "${workspaceFolder}",
      "sourceMaps": true,
      "sourceMapPathOverrides": {
        "webpack:///./*": "${webRoot}/*",
        "webpack:///packages/*": "${webRoot}/packages/*",
        "*": "${webRoot}/*"
      },
      "skipFiles": [
        "<node_internals>/**"
      ]
    }
  ]
}
点击VS Code的Run and Debug图标

点击Run and Debug图标, 选择调试Vue源码(就是我们配置launch.json里面配置的name)

看到commits.html 进入我们打的断点了,可以看到进入mount方法这里

我们点击Step Into

就进入app.mount方法的源码了(精准的进入 不会走vite 对应的第三方包 一大堆最后才到对应的源码)

一个小贴士

在VS Code有一个debug console, 如果我们想打印出来具体传参,我们可以利用这个窗口

相关推荐
尾善爱看海20 分钟前
Vue 面试收官篇:SSR、性能优化落地、30 道高频面试题精讲(附标准答案)
前端·javascript·vue.js·面试·vue
weixin_BYSJ198731 分钟前
【计算机毕设】基于SpringBoot与Vue的文物保护档案管理系统08621
vue.js·spring boot·spring cloud·微服务·架构·django·课程设计
Bs_MoneyMagnet1 小时前
基于springboot+vue的个人健康管理系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·vue3·springboot3·计算机毕业设计
驳是1 小时前
一个组件,提升 react-router 开发的幸福感
前端·preact
GreenTea1 小时前
OpenAI Agents API 上手实测:一次调用把整个 agent loop 甩给 OpenAI
前端·后端·算法
星云API技术支持1 小时前
企业微信二次开发:群权限设置、成员管理与群资料维护的接口组合实践
java·前端·企业微信
京东云开发者2 小时前
81.8 秒的视频,我们改了 15 个版本:一次纯 Codex 驱动的 AI-native 视频实践
前端·aigc
Csvn2 小时前
TypeScript 大型项目架构:从单体 tsconfig 到分层可扩展的工程
前端
Bs_MoneyMagnet4 小时前
基于springboot+vue的心理咨询预约与随访平台的设计与实现 源码+文档
vue.js·spring boot·后端·spring·毕业设计·旅游·计算机毕业设计
计算机魔术师4 小时前
Dario Amodei 发文呼吁为前沿 AI 降速并提出三点计划
前端