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.