这是一个 Fork 仓库
本仓库 fork 自 ohosvscode/arkTS,主要目的是为 JetBrains 系列 IDE(如 IntelliJ IDEA、Android Studio 等)提供 ArkTS 语言服务器支持。
原仓库专注于 VSCode 扩展开发,而本仓库的重点在于:
- 🎯 为 JetBrains 插件提供可用的语言服务器
- 🔧 针对 JetBrains LSP4IJ 框架进行定制化修改
- 📦 提供便捷的构建和打包流程
系统要求:
- Node.js >= 14.20.0
- pnpm >= 8.0.0
- npm >= 8.0.0
# 克隆仓库(必须带 --recursive 参数以克隆 submodule)
git clone https://github.com/你的用户名/arkts-language-server.git --recursive
# 如果克隆时忘记带 --recursive,手动初始化 submodule
git submodule update --init --recursive# 一键构建并打包语言服务器
./build-jetbrains-lsp.sh该脚本会自动完成以下步骤:
- ✅ 检查系统依赖(node、npm、pnpm)
- ✅ 检查并构建
ohos-typescriptsubmodule - ✅ 安装主仓库依赖
- ✅ 编译所有 packages
- ✅ 打包语言服务器到
jetbrains-lsp/目录 - ✅ 安装运行时依赖(包含多平台 native bindings)
- ✅ 验证打包结果
构建完成后,jetbrains-lsp/ 目录包含:
dist/server.js- 语言服务器入口node_modules/- 运行时依赖package.json- 依赖配置
如果需要手动控制构建流程,可以分步执行:
# 如果 ohos-typescript 目录不存在
git submodule update --init --recursivecd ohos-typescript
# 安装依赖
npm install
# 构建 TypeScript 编译器(包含 ArkTS 定制功能)
npm run build:compiler
# 验证构建结果
ls -lh lib/typescript.js # 应该存在且大小约 40MB
cd ..重要:如果 ohos-typescript 源码更新,必须重新构建:
cd ohos-typescript
rm -rf lib/ built/ # 清理旧构建
npm run build:compiler
cd ..# 使用 pnpm 安装(会自动链接 workspace 包)
pnpm install# 构建 packages 目录下的所有包
pnpm -F "{packages/*}" build
# 或者单独构建某个包
pnpm -F @arkts/language-server build
pnpm -F @arkts/language-service build
pnpm -F @arkts/language-plugin build# 使用打包脚本(需要先完成步骤 1-4)
bash scripts/pack-jetbrains-lsp.sh
# 或指定输出目录
bash scripts/pack-jetbrains-lsp.sh /path/to/output在 JetBrains IDE 中安装 LSP4IJ 插件,然后配置语言服务器:
- 打开 Settings → Languages & Frameworks → Language Servers
- 点击 + 添加新的语言服务器
- 配置如下:
- Name: ArkTS Language Server
- Command:
node - Args:
dist/server.js --stdio - Working Directory:
/path/to/jetbrains-lsp(构建输出目录的绝对路径) - File patterns:
*.ets
# 进入输出目录
cd jetbrains-lsp
# 测试启动(按 Ctrl+C 退出)
node dist/server.js --stdio
# 检查依赖
ls node_modules/@arkts/project-detector-*/ # 应该看到多个平台的 native binding这是一个基于 Volar 开发的 ArkTS 语言服务器和 VSCode 扩展。原项目为 ArkTS(HarmonyOS/OpenHarmony 的应用开发语言)提供完整的 IDE 支持。
基于 Volar 框架,提供完整的 ArkTS 语言支持:
- 🌹 完整的
ArkTS语法支持,全量支持所有ArkTS语法 - 🖊️ 完善的 JSON Schema 支持:
build-profile.json5模块级别/项目级别配置oh-package.json5模块级别/项目级别配置module.json5模块级别/项目级别配置code-linter.json5模块级别/项目级别配置resources/element/下所有的color.json、string.json等配置main_pages.json5配置AppScope/app.json5配置
- 🥇
$r函数补全和跳转 - 🥇
module.json5文件的补全和跳转 - 🥇
resources/element/下所有json文件的全局引用查询 - 🍞
module.json5文件路径补全和跳转 - 🍞 引用表达式错误诊断
- 🍞
requestPermissions权限补全 - 🎨 oxk 代码格式化支持
由 @arkts/project-detector hvigor 项目分析器提供强力支撑。
这是一个 pnpm monorepo 项目:
packages/language-server: 语言服务器启动代码packages/language-service: 核心语言服务实现packages/language-plugin: Volar 语言插件packages/shared: 通用工具代码packages/types: 类型定义packages/vfs: 虚拟文件系统packages/vscode: VSCode 扩展(原项目)ohos-typescript: 定制的 TypeScript 编译器(submodule)
# 代码检查(eslint + oxlint + 类型检查 + 测试)
pnpm run lint
# 运行测试
pnpm test
# 监听模式(开发时使用)
pnpm run watch- 原项目: ohosvscode/arkTS
- VSCode 扩展: VSCode Marketplace
- 文档: Arkcode 组织文档
- 项目分析器: @arkts/project-detector
欢迎提交 Issue 和 Pull Request!
详细的开发指南请参考 CONTRIBUTING.md。