行业资讯
📅 2026/8/22 14:51:44
ElixirLS开发者指南:从克隆elixir-ls子模块到发布扩展的完整贡献流程
ElixirLS开发者指南从克隆elixir-ls子模块到发布扩展的完整贡献流程【免费下载链接】vscode-elixir-lsElixir language support and debugger for VS Code, powered by ElixirLS.项目地址: https://gitcode.com/gh_mirrors/vsc/vscode-elixir-ls本文介绍ElixirLS——VS Code 中 Elixir 语言服务器与调试器扩展的完整贡献流程。该项目由两部分组成TypeScript 编写的 VS Code 扩展位于src/以及以 Git 子模块形式引入的 ElixirLS 语言服务器位于elixir-ls/。你将从克隆 elixir-ls 子模块开始一步步走到打包、测试并正式发布扩展。项目结构速览为什么有子模块ElixirLS 扩展的核心智能能力代码补全、跳转定义、Dialyzer 分析、调试器都来自 ElixirLS 语言服务器它通过 Git 子模块存放在elixir-ls目录中子模块配置见根目录的.gitmodules文件。这种双仓库架构意味着改扩展行为命令、任务、测试发现、MCP 工具等→ 修改src/下的 TypeScript 代码改语言服务器补全、诊断、类型推断、调试逻辑→ 修改elixir-ls/子模块内的 Elixir 代码理解这一点后面的克隆、测试、贡献流程就清晰了。第一步克隆仓库并初始化 elixir-ls 子模块⚠️ 最常见的坑忘了用--recursive克隆导致elixir-ls目录是空的。请务必使用递归克隆# 克隆仓库递归拉取 elixir-ls 子模块 git clone --recursive https://gitcode.com/gh_mirrors/vsc/vscode-elixir-ls cd vscode-elixir-ls如果已经克隆过但子模块为空可以补拉git submodule init git submodule update然后安装两边的依赖并编译语言服务器# VS Code 扩展依赖 npm install # ElixirLS 依赖与生产环境编译 cd elixir-ls mix deps.get MIX_ENVprod mix compile cd .. 日常开发中通常不需要手动编译 elixir-ls——扩展的启动脚本会通过Mix.install自动拾取代码变更并重建。只有首次搭建环境或升级依赖时才需要显式编译。第二步用 F5 启动扩展开发主机在 VS Code 中打开项目后按F5运行内置的 Launch Extension local 启动配置即可。该配置定义在.vscode/launch.json中它会先执行build前置任务编译 TypeScript 代码设置环境变量ELS_LOCAL1让扩展直接使用本地子模块中的 ElixirLS而不是从 Mix 远程安装开启一个新的扩展开发主机窗口开发主机打开后你可以像使用正式扩展一样体验所有功能。下图展示了在开发主机中使用 ElixirLS 调试器调试 Phoenix 项目时的界面左侧可以看到变量、调用栈和断点开发过程中如果需要查看 ElixirLS 的日志打开查看 输出在下拉框中选择 ElixirLS 即可查看语言服务器的运行日志。第三步本地运行测试提交 PR 之前请确保本地测试全部通过并为你的改动补充自动化测试rm -rf out npm run compile npm test也可以使用项目提供的test.sh/test.bat脚本它们会完成上述所有步骤。几个实用提示Linux 无头环境运行测试需要虚拟显示xvfb-run -a npm test测试用例位于src/test/覆盖了单目录项目、多根工作区、Umbrella 项目等多种场景测试夹具fixtures在src/test-fixtures/子模块内 ElixirLS 自身的测试则进入子模块执行mix test.vscode/launch.json中还预置了各种场景的测试启动配置如 Launch singleFolderMix Tests方便单场景调试下图标红高亮处展示了测试运行器在 Test Lens 中的表现——可以直接在代码行旁运行单个测试这正是扩展测试发现能力的实际效果子模块改动的贡献流程如果你修改的是 ElixirLS 语言服务器elixir-ls目录不能直接推到本仓库——需要把改动贡献给 ElixirLS 上游。标准流程如下# 进入子模块目录此后的 git 命令都作用于子模块 cd vscode-elixir-ls/elixir-ls # 创建功能分支 git checkout -b my_new_branch # 添加你自己的 fork 作为远程仓库 git remote add my_fork gityour-git-server:your-username/elixir-ls.git # 提交改动并推送到你的 fork git commit -m Your change description git push my_fork my_new_branch然后到 elixir-ls 仓库发起 Pull Request。上游合并后回到本仓库执行git submodule update --remote拉取最新提交再提交子模块指针变更即可。发布扩展的完整步骤发布流程在 DEVELOPMENT.md 中有说明核心步骤如下更新子模块git submodule foreach git pull origin master将 elixir-ls 指到目标 tag升版本号修改package.json中的version字段如0.15.0更新 CHANGELOG.md记录本次版本的改进与破坏性变更本地验证npm install npm install -g vscode/vscelatest vsce package code --install-extension ./elixir-ls-*.vsix --force推送代码确认 CI 构建为绿色打 tag 并推送tag 必须以v为前缀如v0.31.0。GitHub Actions 会自动创建 Release 并发布到 Visual Studio Marketplace 与 Open VSX Registry发布公告在社区论坛更新发布公告 小技巧使用 semver 预发布 tag如v0.1.0-rc.0会触发 dry run只演练发布流程而不真正上架适合发布前做最后验证。另外注意如果你同时安装了 Marketplace 版本和本地构建版本需要关闭 VS Code 的 Extensions: Auto Check Updates 设置否则本地版本会被市场版本覆盖。关键文件速查文件 / 目录作用src/extension.ts扩展入口激活时启动语言客户端src/commands.tsVS Code 命令实现重启、mix 任务等src/taskProvider.tsMix 任务集成src/testController.tsTest Explorer 测试发现与运行.vscode/launch.json扩展开发主机与测试启动配置elixir-ls/ElixirLS 语言服务器子模块含 language_server 与 debug_adapter 应用syntaxes/Elixir 与 EEx 的 TextMate 语法高亮CLAUDE.md项目构建、测试、代码质量的快速命令参考按照以上流程你已经在本地跑通了一个可开发、可测试、可发布的 ElixirLS 扩展环境。从修复一个小 bug 到参与版本发布整个贡献链路都已打通——祝你在 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),仅供参考