最稳妥的是统一用 rimraf——它跨平台、能处理符号链接、自动适配路径分隔符,且可同时删除 node_modules 和 lock 文件(如 package-lock.json 或 yarn.lock),避免重装时复用旧解析结果;推荐全局安装后执行 rimraf node_modules,或用 npx rimraf node_modules 免安装。
node_modules 用哪个命令最稳?别直接用 rm -rf node_modules(Windows 下根本跑不通),也别只清缓存不删目录。最稳妥的是统一用 rimraf——它跨平台、能处理符号链接、不会卡在长路径或权限上。
先全局装一次(只需做一次):npm install -g rimraf
之后在 VSCode 集成终端(确保在项目根目录)执行:rimraf node_modulesrimraf package-lock.json(npm 项目)或 yarn.lock(yarn 项目)
yarn install 或 npm install 可能复用旧解析结果,版本还是不对pnpm-lock.yaml 和 node_modules
rmdir /s /q,rimraf 自动适配路径分隔符yarn cache clean 不能代替删 node_modules?yarn cache clean 只清本地 yarn 缓存(~/.yarn/cache),不影响当前项目的 node_modules 目录。它只是让下次 yarn install 强制重下包,但旧的 node_modules 还在,冲突和残留行为照旧。
真正要重装生效,顺序必须是:rimraf node_modules → rimraf yarn.lock → yarn install
yarn.lock 删除,yarn install 会按原 lock 文件还原,不是“最新包”yarn upgrade --latest,但这和“重装”是两回事yarn cache clean 建议配合使用,尤其当你怀疑缓存损坏导致安装失败时node_modules?改 search.exclude 才真生效很多人以为在 files.exclude 里加了 "**/node_modules": true 就够了,其实那是给资源管理器看的,对 Ctrl+Shift+F 全局搜索完全没用。
必须在工作区 .vscode/settings.json 里写:
"search.exclude": {<br> "**/node_modules": true,<br> "**/bower_components": true<br>}
"node_modules": true 只排除根目录下的,多层嵌套(比如 monorepo 子包里的)照样被搜files to include(比如写了 src/**),search.exclude 会被无视——清空那个框才能让 exclude 生效可以,但别用 shell 脚本封装(跨平台麻烦),直接用 VSCode 的 tasks.json 调用 npx 更干净:
在 .vscode/tasks.json 中加:
{<br> "version": "2.0.0",<br> "tasks": [<br> {<br> "label": "clean & reinstall",<br> "type": "shell",<br> "command": "npx rimraf node_modules && npx rimraf package-lock.json && npm install",<br> "group": "build",<br> "presentation": {<br> "echo": true,<br> "reveal": "always",<br> "focus": false<br> }<br> }<br> ]<br>}
npx rimraf 避免全局依赖,团队协作时每人不用单独装 rimraf
npm install,如果是 yarn 项目,把最后部分换成 yarn install
npm config set registry ...