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」里快速找到。先看总览表:
| # | 配置项 | 默认值 | 一句话说明 |
|---|---|---|---|
| 1 | elixirLS.projectDir | 空(工作区根目录) | 指定 Mix 项目子目录 |
| 2 | elixirLS.useCurrentRootFolderAsProjectDir | false | 不再向父目录查找 mix.exs |
| 3 | elixirLS.mixEnv | test | 编译使用的 MIX_ENV |
| 4 | elixirLS.mixTarget | 空(即 host) | 编译使用的 MIX_TARGET |
| 5 | elixirLS.envVariables | 空 | 编译时注入的额外环境变量 |
| 6 | elixirLS.autoBuild | true | 保存文件时自动触发编译 |
| 7 | elixirLS.fetchDeps | false | 编译时自动获取依赖 |
| 8 | elixirLS.dialyzerEnabled | true | 启用增量 Dialyzer 类型分析 |
| 9 | elixirLS.dialyzerWarnOpts | [] | 开关 Dialyzer 警告类别 |
| 10 | elixirLS.dialyzerFormat | dialyxir_long | Dialyzer 警告展示格式 |
| 11 | elixirLS.suggestSpecs | true | 内联建议 @spec 类型注解 |
| 12 | elixirLS.enableTestLenses | false | 在测试代码上方显示"运行测试"镜头 |
📁 项目定位:让 ElixirLS 找到你的 Mix 项目
1.elixirLS.projectDir:mix.exs 不在根目录怎么办
默认情况下,ElixirLS 假设mix.exs位于工作区根目录。如果你的项目是Umbrella 应用或monorepo(mix.exs在子文件夹中),就把子目录路径填进去。示例项目可参考 src/test-fixtures/sample_umbrella/mix.exs。
2.elixirLS.useCurrentRootFolderAsProjectDir:锁定当前目录
设为true后,ElixirLS 不会向上级目录查找mix.exs。适合"当前文件夹就是完整项目"的场景,避免误识别到外层目录。
⚙️ 编译环境:Mix 环境与环境变量
3.elixirLS.mixEnv:默认 test 环境编译
ElixirLS 默认以MIX_ENV=test编译代码,这样类型检查能覆盖测试代码。如果你的项目dev和test配置差异大(例如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_return、no_contracts、missing_return、error_handling等(完整枚举见 package.json)。不想看某一类噪音时,加上对应的no_xxx项即可。
10.elixirLS.dialyzerFormat:三种警告展示格式
可选dialyzer(原始格式)、dialyxir_short、dialyxir_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.server | off/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),仅供参考