Skip to content

BubblePtr/arkts-language-server

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

659 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

ArkTS Language Server for JetBrains

English | 简体中文

📌 关于本仓库

这是一个 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

该脚本会自动完成以下步骤:

  1. ✅ 检查系统依赖(node、npm、pnpm)
  2. ✅ 检查并构建 ohos-typescript submodule
  3. ✅ 安装主仓库依赖
  4. ✅ 编译所有 packages
  5. ✅ 打包语言服务器到 jetbrains-lsp/ 目录
  6. ✅ 安装运行时依赖(包含多平台 native bindings)
  7. ✅ 验证打包结果

构建完成后,jetbrains-lsp/ 目录包含:

  • dist/server.js - 语言服务器入口
  • node_modules/ - 运行时依赖
  • package.json - 依赖配置

分步构建

如果需要手动控制构建流程,可以分步执行:

步骤 1: 初始化 submodule

# 如果 ohos-typescript 目录不存在
git submodule update --init --recursive

步骤 2: 构建 ohos-typescript(首次或更新后需要)

cd 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 ..

步骤 3: 安装主仓库依赖

# 使用 pnpm 安装(会自动链接 workspace 包)
pnpm install

步骤 4: 构建所有 packages

# 构建 packages 目录下的所有包
pnpm -F "{packages/*}" build

# 或者单独构建某个包
pnpm -F @arkts/language-server build
pnpm -F @arkts/language-service build
pnpm -F @arkts/language-plugin build

步骤 5: 打包语言服务器

# 使用打包脚本(需要先完成步骤 1-4)
bash scripts/pack-jetbrains-lsp.sh

# 或指定输出目录
bash scripts/pack-jetbrains-lsp.sh /path/to/output

配置 JetBrains IDE

在 JetBrains IDE 中安装 LSP4IJ 插件,然后配置语言服务器:

  1. 打开 SettingsLanguages & FrameworksLanguage Servers
  2. 点击 + 添加新的语言服务器
  3. 配置如下:
    • 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.jsonstring.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

📚 相关资源

🤝 贡献

欢迎提交 Issue 和 Pull Request!

详细的开发指南请参考 CONTRIBUTING.md

License 📝

MIT

About

arkts 语言服务器

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 80.3%
  • Vue 8.2%
  • JavaScript 4.3%
  • Shell 4.1%
  • Handlebars 2.8%
  • HTML 0.3%