vscode保存自动格式化没反应,主因是editor.defaultformatter未设对、项目缺本地prettier依赖、语言模式不匹配;验证方式为ctrl+shift+p输入format document with查看列表是否含prettier。

VSCode 保存时自动整理代码没反应?先看这三处
不是插件没装,而是 VS Code 找不到能干活的格式化器。常见现象是按 Shift+Alt+F 没反应,或保存后 import 不排序、缩进没变化。
-
editor.defaultFormatter没设对:比如设成dbaeumer.vscode-eslint,但 ESLint 默认不负责格式化,得额外开eslint.format.enable: true - 项目里缺本地依赖:只装了
esbenp.prettier-vscode插件,但没在项目中npm install --save-dev prettier,插件就只是个空遥控器 - 语言模式错位:右下角显示的是
Plain Text或JavaScript React,而 Prettier 默认只响应JavaScript/TypeScript模式,需手动点击切换
验证是否生效:按 Ctrl+Shift+P → 输入 Format Document With,看列表里有没有 Prettier 或 ESLint。没有就说明链路断在上面某一步。
Vue 项目离线安装 CLI 和插件,别碰 npm install -g @vue/cli
离线环境直接跑 npm install -g @vue/cli 必然失败——它会试图联网拉取几十个依赖包。必须提前在有网机器上打包完整可执行体。
- 推荐做法:在联网机上执行
npm pack @vue/cli,得到一个vue-cli-5.x.x.tgz文件,连同整个node_modules(或至少node_global目录)一起拷到离线机 - 安装命令用
npm install -g 路径/vue-cli-5.x.x.tgz,而不是npm install -g @vue/cli - Vetur 或 Volar 插件不能只下 .vsix 就完事:Volar 要求 VS Code 版本 ≥ 1.77,旧版内网机若用的是 1.6x,装了也白装,得同步降级插件版本
注意:vue create my-project 在离线机执行时,仍会尝试访问远程 preset 列表(哪怕你指定 --default),建议提前把 @vue/cli-init 等依赖一并打包进去。
editor.formatOnSave 开了却只格式化部分文件?检查语言作用域配置
全局开启 editor.formatOnSave 很危险,尤其当你同时打开 Vue、Python、Shell 多个项目时。真正可控的做法是按语言类型单独配。
- 项目根目录建
.vscode/settings.json,写死规则,避免污染其他项目:{ "editor.formatOnSave": false, "[javascript]": { "editor.formatOnSave": true }, "[typescript]": { "editor.formatOnSave": true }, "[vue]": { "editor.formatOnSave": true } } - Vue 单文件组件里,
<script></script>块默认语言模式是javascript,但有些老项目没配jsconfig.json,导致 ESLint/Prettier 无法识别模块路径,格式化直接跳过 - 如果只想格式化改动行(比如编辑一个 2000 行的 JS 文件),把
editor.formatOnSaveMode设为modifications,比file更轻量
离线环境里,import 排序和 ESLint 自动修复为什么总失效
因为 ESLint 的“保存时自动修复”是独立开关,和格式化不是一回事。开了 editor.formatOnSave,不代表 ESLint 就会帮你删分号、排 import。
- 必须显式启用:在设置里加
"eslint.codeAction.onSave.mode": "all",且确保"editor.codeActionsOnSave"包含"source.fixAll.eslint" - ESLint 配置里要禁用所有和 Prettier 冲突的规则,靠
eslint-config-prettier包实现,这个包必须npm install --save-dev eslint-config-prettier进项目,光装插件没用 - 离线机若没装 Node.js 或 npm 版本太低(如 v14 以下),
eslint --fix可能根本跑不起来,此时codeActionsOnSave会静默失败,连报错都不提示
最易被忽略的一点:离线环境下,VS Code 的语义索引(Semantic Token)可能加载不全,导致 ESLint 无法正确识别 import 语句边界——这不是配置问题,是底层语言服务没起来,换用 Volar + TypeScript 服务通常更稳。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











