源码快速定位工具 source-ref

568 阅读1分钟

背景

source-ref 是一款通过网页点击快速定位到源码的工具,用于解决从视觉上快速定位到所在源码具体位置。与现有的devtools(vue-devtools/react-developer-tools)的源码定位互补

  • UI 框架支持 React, Vue框架
  • 打包工具支持 webpack,rollup, vite
  • 跳转方式支持 vscode 打开, Github 打开

官方网站: sourceref.moonrailgun.com/
开源地址: github.com/moonrailgun…

演示

定位到 Github 源码

github

使用 vscode 打开源码

vscode

快速接入

react + webpack 为例:

npm install source-ref-runtime
npm install -D source-ref-loader

webpack.config.json 中, 处理 jsx 文件的 loader 的最下面插入source-ref-loader:

{
  test: /.tsx?$/,
  exclude: /node_modules/,
  use: [
    {
      loader: 'esbuild-loader',
      options: {
        loader: 'tsx',
        target: 'es2015',
      },
    },
    {
      loader: 'source-ref-loader',
    },
  ],
}

在入口文件处,插入:

import('source-ref-runtime').then(({ start }) => start())

打开项目,Alt(option in mac) + LMB(鼠标左键点击) 即可弹出选择框

更多示例见官网: sourceref.moonrailgun.com/

原理

原理

打包阶段:

  • 解析源码到 AST, 找到组件节点的开头部分插入当前所在位置信息
  • 将处理好的 AST 转换回原来的代码形式

渲染阶段:

  • 优化提示路径, 减少长路径带来的视觉污染(在 devtools)
  • 快捷键点击 DOM 元素,弹出选择框。
  • 点击选择节点,通过打开 vscode 注册的 URI Scheme 从网页打开一个文件并定位到具体行号和列号