之前在分析vue-loader
的那篇文章里埋了这个坑,但是直到现在我才来分析,主要有以下几个原因。
typescript
编译过的,代码已经变得奇奇怪怪了,另外就是全部代码都堆到一起,上万行能直接让人心态爆炸。typescript
写的,所以就需要知道如何调试typescript
。vite
的,所以学下vite
没什么不对吧doge
。vite
自带的vitest
,所以也就顺便学了,没什么不对吧doge
。vitest
毕竟还能年轻,还有些bug
,所以学下用的较多的jest
没什么不对吧doge
。jest
学了,但是没法“直接”测试typescript
文件,所以又学了一波babel +jest
还有ts-jest
没什么不对吧doge
。简直太对了
上面提到的文章感兴趣的大佬可以去看下。
坏蛋Dan:如何基于VSCode调试Typescript代码
觉得有用的话请务必点个赞,谢谢!
让我们先回到vue-loader/dist/index.js
中,找到调用compiler-sfc
的地方。
而跟着进入到vue/compiler-sfc
然后再跟着进入@vue/compiler-sfc
中。
先看到package.json
文件中的配置
main
:这个就不多说了,webpack
这类commonjs
的打包入口module
:是rollup
这类esmodule
的打包入口因为我们用的还是webpack
,所以这里进入到compiler-sfc.cjs.js
文件中。
但是你一进去你会发现有上万行代码,而且是经过typescript
解析器编译过后的,可以读,但是可读性没原来的好看。
所以我们这里就不再跟着这个dist
的来分析了。
我们直接去官网拉一下包,然后再自己传数据进去。
对的,你没看错,就是pnpm
。如果你没用pnpm
的话是没法安装依赖的,为什么呢?因为这个包里包含了一些子包(monorepo
),如果你安装依赖的话你需要进入到每个包中安装一次,这样就会导致很多包都重复了,而且很繁琐。
以前是基于Lerna
[1] + yarn
。现在用pnpm
[2]就能搞定。
不过即使这个项目没有要求pnpm
,我也推荐你的电脑全局安装一个,因为对于办公本来说,能省下很多的内存空间。
ok
,不多说。安装完依赖后我们直接去到packages/compiler-sfc
包下,找到__tests__
,这些就是我们调试的入口。
然后我们来看下根目录(最外层,不是指compiler-sfc
包)的package.json
看样子是基于ts-jest
来写的测试,而不是自家的vitest
[3] 。
老规矩,准备直接F5
写调试环境,但是眼尖的你应该已经看到了其实已经自带了(真贴心~)
那话不多说,我们直接在src/compileScript.ts
文件里随便打个断点
然后跑到__tests__/compileScript.spec.ts
文件中按下F5
或者左边调试面板选择
ok
,这就可以开始调试啦。
或者嫌麻烦想只debug
某个测试元,你可以安装下jest runner
这个vscode
拓展,然后
直接开跑就完事了。
发布于 2022-11-12 13:11・IP 属地广东