ElixirLS设置全解析:12个elixirLS.*配置项让你彻底掌控Elixir开发环境
2026/8/22 15:46:39 网站建设 项目流程

ElixirLS设置全解析:12个elixirLS.*配置项让你彻底掌控Elixir开发环境

【免费下载链接】vscode-elixir-lsElixir language support and debugger for VS Code, powered by ElixirLS.项目地址: https://gitcode.com/gh_mirrors/vsc/vscode-elixir-ls

ElixirLS(项目名vscode-elixir-ls)是 VS Code 中最强大的 Elixir 语言支持扩展,基于 ElixirLS 语言服务器,提供代码补全、断点调试、ExUnit 测试管理和 Dialyzer 类型检查。默认配置已经"开箱即用",但如果你遇到「找不到 mix.exs」「编译环境不对」「Dialyzer 警告刷屏」这类问题,就需要掌握elixirLS.配置项*。本文带你逐一拆解 12 个核心 ElixirLS 设置,帮你彻底掌控 Elixir 开发环境。

📋 12 个 ElixirLS 配置项速览

所有配置项都定义在 package.json 的contributes.configuration中,可在「设置 → 搜索elixirLS」里快速找到。先看总览表:

#配置项默认值一句话说明
1elixirLS.projectDir空(工作区根目录)指定 Mix 项目子目录
2elixirLS.useCurrentRootFolderAsProjectDirfalse不再向父目录查找 mix.exs
3elixirLS.mixEnvtest编译使用的 MIX_ENV
4elixirLS.mixTarget空(即 host)编译使用的 MIX_TARGET
5elixirLS.envVariables编译时注入的额外环境变量
6elixirLS.autoBuildtrue保存文件时自动触发编译
7elixirLS.fetchDepsfalse编译时自动获取依赖
8elixirLS.dialyzerEnabledtrue启用增量 Dialyzer 类型分析
9elixirLS.dialyzerWarnOpts[]开关 Dialyzer 警告类别
10elixirLS.dialyzerFormatdialyxir_longDialyzer 警告展示格式
11elixirLS.suggestSpecstrue内联建议 @spec 类型注解
12elixirLS.enableTestLensesfalse在测试代码上方显示"运行测试"镜头

📁 项目定位:让 ElixirLS 找到你的 Mix 项目

1.elixirLS.projectDir:mix.exs 不在根目录怎么办

默认情况下,ElixirLS 假设mix.exs位于工作区根目录。如果你的项目是Umbrella 应用monorepomix.exs在子文件夹中),就把子目录路径填进去。示例项目可参考 src/test-fixtures/sample_umbrella/mix.exs。

2.elixirLS.useCurrentRootFolderAsProjectDir:锁定当前目录

设为true后,ElixirLS 不会向上级目录查找mix.exs。适合"当前文件夹就是完整项目"的场景,避免误识别到外层目录。

⚙️ 编译环境:Mix 环境与环境变量

3.elixirLS.mixEnv:默认 test 环境编译

ElixirLS 默认以MIX_ENV=test编译代码,这样类型检查能覆盖测试代码。如果你的项目devtest配置差异大(例如config/config.exs按环境区分编译选项),可以改回dev

4.elixirLS.mixTarget:为 Nerves 等项目指定 target

Nerves 等嵌入式项目依赖MIX_TARGET拉取不同依赖,把目标(如rpi3)填到这里即可与命令行行为保持一致。

5.elixirLS.envVariables:编译时注入环境变量

以键值对形式在编译时注入额外环境变量,例如需要数据库凭据或 API Key 才能编译通过的项目。

🔨 构建与依赖管理

6.elixirLS.autoBuild:保存即编译

默认true:每次保存代码都会触发 ElixirLS 增量构建。这是补全、跳转和类型检查能实时生效的前提;只在排查编译卡顿时才建议临时关闭。

7.elixirLS.fetchDeps:自动获取依赖

默认false,即不会自动执行mix deps.get。在 Dev Container 或 CI 中开启它,可以省去手动拉取依赖这一步;本地开发保持关闭,能避免扩展在网络受限环境下卡住。

🛡️ Dialyzer 类型检查:12 个配置中的"重头戏"

8.elixirLS.dialyzerEnabled:一键开关类型分析

默认true。ElixirLS 内置增量 Dialyzer,首次运行会构建 PLT(可能耗时几分钟),之后只分析改动的部分。大型项目觉得慢时先关掉,再用下面两项精细调优。

9.elixirLS.dialyzerWarnOpts:只留下你关心的警告

这是一个字符串数组,可开启或关闭具体警告类别,例如no_returnno_contractsmissing_returnerror_handling等(完整枚举见 package.json)。不想看某一类噪音时,加上对应的no_xxx项即可。

10.elixirLS.dialyzerFormat:三种警告展示格式

可选dialyzer(原始格式)、dialyxir_shortdialyxir_long(默认)。团队如果习惯mix dialyzer --format long的输出,默认值正好一致。

11.elixirLS.suggestSpecs:自动建议 @spec 注解

默认true,依赖 Dialyzer 推断出的成功类型,在编辑器里直接给你@spec补全建议——写类型注解的捷径。如果提示干扰了代码风格,设为false

🧪 测试:12 个配置之外的第二利器

12.elixirLS.enableTestLenses:在编辑器里一键跑测试

默认false。开启后,每个test上方会出现 Code Lens,直接点"Run test",无需切到 Test Explorer。

日常测试管理仍以 VS Code 的Test Explorer为主(发现、运行、调试test/**/*_test.exs全部自动完成),Code Lens 只是锦上添花。更多细节可看 walkthroughs/run-tests.md。

🎛️ 进阶配置:按需再了解

配置项用途
elixirLS.trace.serveroff/messages/verbose,排查语言服务器通信问题用
elixirLS.stdlibSrcDir指定 Elixir 标准库源码目录,支持跳转到标准库定义
elixirLS.languageServerOverridePath用自定义的 ElixirLS release 覆盖内置版本
elixirLS.autoInsertRequiredAlias补全后自动插入缺失的 alias(默认开启)
elixirLS.signatureAfterComplete确认补全后继续显示函数签名帮助
elixirLS.dotFormatter指定自定义.formatter.exs格式化文件
elixirLS.mcpEnabled/elixirLS.mcpPort启用内置 MCP 服务器,让 AI 助手理解你的 Elixir 代码

✅ 配置在哪里写?排障小抄

  • 全局生效:用户设置(Ctrl/Cmd + ,搜索elixirLS
  • 项目级覆盖.vscode/settings.json(可随项目提交,团队共享)
  • 所有配置都是resource作用域,多根工作区可以为每个文件夹单独设置
  • 改完不生效?命令面板执行Elixir: Restart language server;仍不行就打开查看 → 输出面板选择ElixirLS查看日志

官方快速上手指南(含安装 Elixir/OTP、打开项目、Dialyzer 步骤)位于 walkthroughs/configure.md 与 walkthroughs/dialyzer.md。掌握这 12 个elixirLS.*配置项后,ElixirLS 就能完全贴合你的项目结构,让 Elixir 开发又快又稳。

【免费下载链接】vscode-elixir-lsElixir language support and debugger for VS Code, powered by ElixirLS.项目地址: https://gitcode.com/gh_mirrors/vsc/vscode-elixir-ls

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询