https://github.com/ohosvscode/project-detector
Hvigor Project Finder analyzer 🔍 Specify a base working directory, scan all HarmonyOS projects ✨ written in Rust, provide NAPI bindings to TypeScript ✊ Hvigor 项目查找分析器 🔍 指定一个基础工作目录,扫描此目录下所有鸿蒙工程 ✨ Rust编写,提供 NAPI 绑定到TypeScript ✊
https://github.com/ohosvscode/project-detector
harmonyos harmonyos-next huawei hvigor
Last synced: 6 months ago
JSON representation
Hvigor Project Finder analyzer 🔍 Specify a base working directory, scan all HarmonyOS projects ✨ written in Rust, provide NAPI bindings to TypeScript ✊ Hvigor 项目查找分析器 🔍 指定一个基础工作目录,扫描此目录下所有鸿蒙工程 ✨ Rust编写,提供 NAPI 绑定到TypeScript ✊
- Host: GitHub
- URL: https://github.com/ohosvscode/project-detector
- Owner: ohosvscode
- License: mit
- Created: 2025-10-03T03:34:39.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2026-01-20T03:54:45.000Z (6 months ago)
- Last Synced: 2026-01-20T10:42:52.278Z (6 months ago)
- Topics: harmonyos, harmonyos-next, huawei, hvigor
- Language: Rust
- Homepage:
- Size: 626 KB
- Stars: 3
- Watchers: 1
- Forks: 1
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
Awesome Lists containing this project
README

# ArkTS Project Detector
> 准确的来说,这应该是一个 Hvigor Project Detector. (QWQ)
指定一个基础的工作目录,扫描这个目录下的所有鸿蒙工程。
提供`napi`绑定,用于在 Node.js 中使用。
## 安装 ⏬
```bash
pnpm install @arkts/project-detector
```
现代包管理器(如`pnpm`)会自动下载当前您计算机架构和系统的二进制绑定,无需担心兼容性问题。如果您的 `node_modules` 需要用于打包,则推荐把所有的相关依赖都装上,或者使用 `pnpm install --force` 安装依赖。
## 📦 关于 `bundled` 包
`bundled` 包将node.js层的封装包含 `node_modules` 中的依赖一起打包,可以直接在 `Node.js` / `Bun` 中直接导入使用(可以无需依赖安装),避免了依赖安装不全的问题。导入直接改为这样即可:
```ts
import { ProjectDetector } from '@arkts/project-detector/bundled'
```
## 使用 📝
```ts
import { Module, Project, ProjectDetector } from '@arkts/project-detector'
const projectDetector = ProjectDetector.create(/** 基础工作目录 */)
// 扫描当前工作目录下的所有鸿蒙工程
const projects = Project.findAll(projectDetector)
// 扫描当前鸿蒙工程下的所有模块
const modules = projects[0] && Module.findAll(projects()[0])
// 扫描当前鸿蒙工程下的所有产品
const products = modules[0] && Product.findAll(modules()[0])
// ...
```
更多API请参考声明文件。
## 注意事项 ⚠️
本库使用 `TypeScript` 包裹了一层Rust的API,在Rust的API基础上提供了一个基于 `mitt` + `alien-signals` 的文件事件系统,用于监听文件的创建、修改、删除事件,并即时地动态更新每个对象数据。
您可以使用内置的 `chokidar` 直接监听文件事件,也可以自己调用 `mitt` 的 `emit` 方法处理文件事件。比如在[ohosvscode/arkTS](https://github.com/ohosvscode/arkTS)的语言服务器中,我们使用vscode内置的文件系统监听器,将事件发送到`language-server`进程中并传给了`ProjectDetector`实例。

## Contact to Author 📧
- Telegram: [@GCZ_Zero](https://t.me/GCZ_Zero)
- X (Twitter): [@GCZ_Zero](https://x.com/GCZ_Zero)
- QQ: 1203970284,QQ群: 746153004
- WeChat: gcz-zero
## License 📜
MIT