ElixirLS开发者指南:从克隆elixir-ls子模块到发布扩展的完整贡献流程

发布时间:2026/8/22 14:51:45

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),仅供参考

相关新闻

Neutone SDK 进阶技巧:Lookbehind 缓冲区与预滤波器让神经音频模型更稳定高效

Neutone SDK 进阶技巧:Lookbehind 缓冲区与预滤波器让神经音频模型更稳定高效

2026/8/22 14:51:45

Neutone SDK 进阶技巧:Lookbehind 缓冲区与预滤波器让神经音频模型更稳定高效 【免费下载链接】neutone_sdk Join the community on Discord for more discussions around Neutone! https://discord.gg/VHSMzb8Wqp 项目地址: https://gitcode.com/gh_mirrors/ne/n…

bilibili-downloader B站视频下载完整教程:大会员4K视频一键存入硬盘

bilibili-downloader B站视频下载完整教程:大会员4K视频一键存入硬盘

2026/8/22 14:51:45

bilibili-downloader B站视频下载完整教程:大会员4K视频一键存入硬盘 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader bili…

VAM:声明式 Vim 插件管理完全指南,三步复刻你的开发环境

VAM:声明式 Vim 插件管理完全指南,三步复刻你的开发环境

2026/8/22 14:51:45

VAM:声明式 Vim 插件管理完全指南,三步复刻你的开发环境 【免费下载链接】vim-addon-manager manage and install vim plugins (including their dependencies) in a sane way. If you have any trouble contact me. Usually I reply within 24 hours …

十年车机性能优化经验总结系列(一):性能数据采集与 bat 小工具

十年车机性能优化经验总结系列(一):性能数据采集与 bat 小工具

2026/8/22 16:01:48

十年车机性能优化经验总结系列(一):性能数据采集与 bat 小工具 一条 bat 命令,10 秒拿到车机完整性能快照 —— 把零散的 adb 黑话打包成随手可跑的采集工具 系列导航:(总览) (一&a…

如何把Rebar项目迁移到erlang.mk:两大Erlang构建工具对比与兼容性完整清单

如何把Rebar项目迁移到erlang.mk:两大Erlang构建工具对比与兼容性完整清单

2026/8/22 16:01:48

如何把Rebar项目迁移到erlang.mk:两大Erlang构建工具对比与兼容性完整清单 【免费下载链接】erlang.mk A build tool for Erlang that just works. 项目地址: https://gitcode.com/gh_mirrors/er/erlang.mk 📦 erlang.mk 是 Erlang 生态中一款&qu…

Photoshop 纹理压缩教程:用 Intel Texture Works 三步导出 BCn 压缩 DDS

Photoshop 纹理压缩教程:用 Intel Texture Works 三步导出 BCn 压缩 DDS

2026/8/22 16:01:48

Photoshop 纹理压缩教程:用 Intel Texture Works 三步导出 BCn 压缩 DDS 【免费下载链接】Intel-Texture-Works-Plugin Intel has extended Photoshop* to take advantage of the latest image compression methods (BCn/DXT) via plugin. The purpose of this plug…

external-snapshotter快照删除策略详解:Delete还是Retain?一文避免存储资源泄漏

external-snapshotter快照删除策略详解:Delete还是Retain?一文避免存储资源泄漏

2026/8/22 16:01:48

external-snapshotter快照删除策略详解:Delete还是Retain?一文避免存储资源泄漏 【免费下载链接】external-snapshotter Sidecar container that watches Kubernetes Snapshot CRD objects and triggers CreateSnapshot/DeleteSnapshot against a CSI en…

FinalBurn Neo 街机模拟器完整指南:构建配置与核心功能实操

FinalBurn Neo 街机模拟器完整指南:构建配置与核心功能实操

2026/8/22 16:01:48

FinalBurn Neo 街机模拟器完整指南:构建配置与核心功能实操 【免费下载链接】FBNeo FinalBurn Neo - We are Team FBNeo. 项目地址: https://gitcode.com/gh_mirrors/fb/FBNeo FinalBurn Neo(FBNeo)是一个多系统街机与家用机模拟器&am…

DataClawBench:构建金融数据分析AI Agent的评测基准与实践指南

DataClawBench:构建金融数据分析AI Agent的评测基准与实践指南

2026/8/22 15:51:48

1. 从“黑盒”到“白盒”:为什么我们需要一个金融数据分析的Agent基准? 最近和几个做量化分析的朋友聊天,大家不约而同地提到了一个痛点:现在市面上各种AI Agent框架和模型层出不穷,都说自己能处理金融数据、能做探索性…

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

2026/8/21 21:41:19

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

2026/8/22 11:09:22

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

2026/8/22 11:09:22

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

多尺度智能体控制:从宏观密度场到微观决策的架构与实践

多尺度智能体控制:从宏观密度场到微观决策的架构与实践

2026/8/22 0:00:52

1. 从宏观到微观:多尺度智能体控制的核心挑战在智能体(Agent)技术日益普及的今天,我们面临着一个越来越普遍的难题:如何同时管理成千上万个,甚至百万级别的智能体?无论是城市交通中的自动驾驶车…

CUBE标准:统一AI智能体评测的度量衡与架构解析

CUBE标准:统一AI智能体评测的度量衡与架构解析

2026/8/22 0:00:52

1. 项目概述:为什么我们需要一个统一的智能体评测标准?最近在折腾各种AI智能体项目,从简单的自动化脚本到复杂的多模态交互系统,我发现了一个让人头疼的共性问题:评测。每次开发完一个智能体,想看看它到底行…

沉金PCB工艺实战指南:从设计到SMT焊接的可靠性保障

沉金PCB工艺实战指南:从设计到SMT焊接的可靠性保障

2026/8/22 0:00:52

在电子硬件开发领域,PCB(印制电路板)的沉金工艺是提升产品可靠性和焊接质量的关键环节。对于需要高密度互连、长期稳定运行或高频信号传输的板卡,如“黍姐仿通行证”这类可能涉及身份识别、数据交互的硬件项目,选择正确…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/22 2:02:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/22 4:13:47

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/22 1:32:34

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…