node_modules debug
日常开发中,常用 pnpm dev
命令启动项目,如何调试这条命令呢?
pnpm dev
pnpm dev
= pnpm run dev
对应 package.json
json
{
"scripts": {
"dev": "vite"
}
}
{
"scripts": {
"dev": "vite"
}
}
vite
对应 node_modules\.bin
中的脚本
shell
# ...
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../vite/bin/vite.js" "$@"
else
exec node "$basedir/../vite/bin/vite.js" "$@"
fi
# ...
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../vite/bin/vite.js" "$@"
else
exec node "$basedir/../vite/bin/vite.js" "$@"
fi
脚本准备执行环境后,又执行对应依赖中的 js 脚本
debug vite
准备本地 vite 环境
- github 下载 vite 源码,并安装依赖
- 在项目根目录执行 pnpm dev
链接本地 vite
- 进入 vite 项目
\packages\vite
路径,使用 pnpm link --global 链接到全局node_modules
中,让其他项目通过全局node_modules
链接访问 - 进入
projectA
项目根目录,运行pnpm link --global vite
链接全局node_modules
中的 vite 依赖 - 完成后,
projectA
中的node_modules/vite
软连接到vite\packages\vite
(可以通过增加文件或代码检测)
vscode debug 设置
添加 launch 配置
工作区 debug
工作区 .vsocde/
中新增 launch.json
文件
json
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug pnpm dev",
"type": "node",
"request": "launch",
"cwd": "${workspaceFolder}",
"runtimeExecutable": "pnpm",
"runtimeArgs": ["dev"],
"restart": true,
"console": "integratedTerminal"
}
]
}
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug pnpm dev",
"type": "node",
"request": "launch",
"cwd": "${workspaceFolder}",
"runtimeExecutable": "pnpm",
"runtimeArgs": ["dev"],
"restart": true,
"console": "integratedTerminal"
}
]
}
全局 debug
用户设置 setting 中添加
json
"launch": {
"version": "0.2.0",
"configurations": [
{
"name": "Debug pnpm dev",
"type": "node",
"request": "launch",
"cwd": "${workspaceFolder}",
"runtimeExecutable": "pnpm",
"runtimeArgs": [ "dev"],
"restart": true,
"console": "integratedTerminal"
}
]
}
"launch": {
"version": "0.2.0",
"configurations": [
{
"name": "Debug pnpm dev",
"type": "node",
"request": "launch",
"cwd": "${workspaceFolder}",
"runtimeExecutable": "pnpm",
"runtimeArgs": [ "dev"],
"restart": true,
"console": "integratedTerminal"
}
]
}
开始调试
- 进入
projectA/node_modules/vite/bin/vite.js
增加断点 - vscode
运行
启动调试 F5
找到对应Debug pnpm dev
运行