vscode 导入语句排序和删除未使用的导入

vscode 自带的格式化

vscode 默认支持导入语句排序和删除未使用的导入。

对应的配置是:source.organizeImports

可选值:

  1. never:关闭
  2. explicit:仅在显式手动保存时触发
  3. always:自动保存时也会触发

我喜欢在手动 Ctrl + S 保存时,自动格式化当前代码。因此可以如下配置:

json 复制代码
{
    "editor.formatOnSave": true, // 保存时格式化
    "editor.codeActionsOnSave": {
        "source.organizeImports": "explicit" // 在显示保存时,整理导入语句
    }
}

eslint 实现整理导入语句

vscode 的导入语句排序,没有强制性,在协作中为了规范其他人要整理导入语句,我们往往会使用 eslint 对排序进行校验。

并且 vscode 是按字母顺序排序的,这可能不符合要求,或者想要自定义排序规则。我们往往也会使用 eslint 来执行整理代码的操作。

这依赖两个 eslint 插件:

  1. 导入排序:eslint-plugin-simple-import-sort
  2. 删除未使用的导入:eslint-plugin-unused-imports

安装后, eslint 配置:

typescript 复制代码
module.exports = {
  plugins: [
    "unused-imports", 
    "simple-import-sort"
  ],
  rules: {
   "simple-import-sort/imports": "error", // 强制导入语句排序
    // "simple-import-sort/exports": "error", // 强制导出语句排序
    "unused-imports/no-unused-imports": "error", // 禁止未使用的导入,eslint修复时会自动删除未使用的导入
    "unused-imports/no-unused-vars": [
        // 不禁止未使用的变量,只是警告,避免 eslint 修复时删除它
        "warn",
        { vars: "all", varsIgnorePattern: "^_", args: "after-used", argsIgnorePattern: "^_" }
    ]
  }
}

配置规则后,当代码不符合规范时,eslint 就会抛出对应的错误或者警告。

执行 eslint --fix 修复时,两个插件就会按配置的规则整理导入语句。

显然执行 eslint 命令修复太麻烦了,我希望和 vscode 自带的整理功能一样,手动执行 Ctrl + S 保存时,就整理代码。

要实现这一点,只需要配置 source.fixAll.eslint。指定在显示保存时,使用 eslint --fix 来格式化代码即可。

并且注意,要关闭 vscode 自带的整理导入语句功能,要不然会有冲突,因为两个排序规则不一样。

  • VSCode 默认的导入整理是按文件路径字母顺序排序,
  • <font style="background-color:rgb(252, 252, 252);">simple-import-sort</font> 插件要求按自定义分组规则(默认是内置模块优先、外部依赖次之、本地文件最后)排序。
typescript 复制代码
{
    "editor.formatOnSave": true, // 保存时自动格式化
    "editor.codeActionsOnSave": {
        "source.organizeImports": "never", // 关闭 vscode 默认的导入语句整理功能:1.import 语句按字母顺序排序, 2.删除未使用的导入语句
        "source.fixAll.eslint": "explicit" // 让 ESLint 处理所有修复(包括排序)
    }
}
相关推荐
xiaofeichaichai6 分钟前
ES 新特性九年速览:从 ES2016 到 ES2024
前端·javascript·es6
2401_834636998 分钟前
Keepalived + LVS (DR) + Nginx + NFS 高可用 Web 集群部署实战手册
前端·nginx·lvs
和你看星星10 分钟前
我把代码排查流程做成了一个 Codex Skill
前端
excel16 分钟前
AI 冲击下的前端发展指引:从工具到价值的重塑
前端
文心快码BaiduComate16 分钟前
提升组织级AI Coding质量:电商搜索项目实践
前端·后端·程序员
excel26 分钟前
AI 时代前端转型:模型训练才是未来的核心竞争力
前端
放下华子我只抽RuiKe538 分钟前
FastAPI 全栈后端(四):认证与授权
开发语言·前端·javascript·python·深度学习·react.js·fastapi
持敬chijing1 小时前
Web渗透之前后端漏洞-文件包含漏洞
前端·安全·web安全·网络安全·网络攻击模型·安全威胁分析
CV艺术家1 小时前
前端免费高效的接入天气组件(天气网),控制组件的样式
前端
如果超人不会飞1 小时前
WebMCP:当浏览器学会和 AI「说人话」,你的网页就成了智能体的游乐场
javascript