文档 / IDE

语言服务器与构建

Yuli 替你安装和维护的语言服务器(无需 npm,也无需系统中的 Node),以及适用于 Python、Go、.NET、sbt、Bazel 和 Node 的构建适配器。

对于每种语言,Yuli 都使用该语言的标准语言服务器(LSP),并替你管理它:经你许可后下载、完成校验,并将其存放在你的项目之外。Java 拥有自己的原生引擎,CSS、SCSS 和 LESS 则由编辑器直接处理。

托管的服务器

语言 服务器 安装来源
TypeScript 和 JavaScript typescript-language-server 搭配 typescript(真正的 tsserver) npm 注册表
Python Pyright npm 注册表
Go gopls go install
Kotlin kotlin-language-server GitHub zip 包
C# csharp-ls dotnet tool
PHP Intelephense npm 注册表
Ruby ruby-lsp gem
C 和 C++ clangd 19.1.2 GitHub zip 包
Bash bash-language-server npm 注册表
Dockerfile dockerfile-language-server-nodejs npm 注册表
Rust rust-analyzer GitHub 二进制文件

你的电脑上无需 npm 或 Node

  • 软件包直接从 npm 注册表下载,并与注册表发布的 SHA-512 校验和进行比对。
  • 不会运行安装脚本,也不会安装可选依赖。
  • 它们运行在 Yuli 自带的 Electron(以 Node 模式)之上,或运行在 Yuli 下载的 Node 之上。你无需安装 npm 或 Node。
  • 保存在 <runtimes>/<服务器>/<版本>/ 中。
  • 只有在连续 60 秒没有收到任何数据时,下载才会中断;速度慢但仍在进行的下载不会被打断。

Yuli 的运行时文件夹(<runtimes>)因系统而异:

%LOCALAPPDATA%\.yulicode\runtimes

经你许可

如果缺少某种语言的服务器,编辑器会显示 “没有可用于……的语言服务器”,并提供以下选项:

选项 作用
允许下载 / 允许安装 Yuli 安装并启动该服务器
以后再说 本次会话中不再询问
不再询问 记住你对该服务器的决定

未经你的授权,不会下载或运行任何内容。你的决定按服务器和目标(本机或远程主机)分别保存在配置旁的 lsp-install-consent.json 中。

在 全局选项 → 语言服务器 中,你可以指定已有服务器的路径,或填写一个可信的 URL 或镜像。

构建适配器

Yuli 根据项目中的文件识别其构建方式,无需运行任何程序来判断,并使用相应工具来编译、运行、测试,以及在 测试 面板中显示结果。

  • 包管理器: pip(requirements*.txt、setup.py 或简单的 pyproject.toml)、Poetry、uv、Pipenv 和 Hatch。
  • 环境: 使用项目的虚拟环境(.venv/venv、Poetry 和 Pipenv 的文件夹,或 Hatch 的文件夹)。没有虚拟环境时,使用包管理器的 run;再不行则使用系统的 Python。
  • 测试: 如果项目配置了 pytest 或依赖它,就使用 pytest;否则使用 unittest。
  • 同一环境也会传给 Pyright,这样自动补全就能看到你的依赖。

Maven、Gradle、Ant 和 Cargo 照常工作;参见运行与调试。

边栏中的 ▶

代码旁会出现一个 ▶,用来运行或调试眼前的代码。只有当项目确实属于该类型时才会显示。

语言 运行 调试
Python if __name__ == "__main__": 以及 pytest 或 unittest 测试 if __name__ == "__main__":
Go func main 和 func TestX func main 和 func TestX
C# xUnit、NUnit 和 MSTest 测试 static void Main(

此外,package.json 中的每个脚本都有自己的 ▶(使用项目的包管理器运行);在 Java 中,带有 main 的类、测试以及 Maven 和 Gradle 任务也都有 ▶。

调试会话参见调试,编辑器的其他功能参见编辑器与语言。