VSC 的插件加载机制
前言
好奇 vscode 的插件,是如何找对应的命令的。
prettier
目录没有找到 node_modules
如果当前项目下,没有 node_modules
, 是从插件自身去找命令的:
/Users/leohxj/.vscode/extensions/esbenp.prettier-vscode-10.1.0/node_modules/prettier/index.js
可以看到当前 prettier v10.0.1
版本中,还是使用的 prettier v2.8
.
如果 node_modules
中存在 prettier
就会使用 node_modules
中的版本。
["INFO" - 9:04:29 PM] PrettierInstance:
{
"modulePath": "/Volumes/SN770_1T/workspace/drafts/vsc-extension/use-prettier/node_modules/prettier/index.cjs",
"importResolver": {},
"callMethodResolvers": {},
"currentCallMethodId": 9,
"version": "3.1.1"
}
技术总结
所以 rush.js 项目,根目录下没有 node_modules 的, 就只能用插件自带的,或者配置文件中指定路径位置。但一般也不直接在根目录下使用, 都是子包开发,子包内又会有 prettier.