准确的来说,这应该是一个 Hvigor Project Detector. (QWQ)
指定一个基础的工作目录,扫描这个目录下的所有鸿蒙工程。
提供napi绑定,用于在 Node.js 中使用。
pnpm install @arkts/project-detector现代包管理器(如pnpm)会自动下载当前您计算机架构和系统的二进制绑定,无需担心兼容性问题。如果您的 node_modules 需要用于打包,则推荐把所有的相关依赖都装上,或者使用 pnpm install --force 安装依赖。
bundled 包将node.js层的封装包含 node_modules 中的依赖一起打包,可以直接在 Node.js / Bun 中直接导入使用(可以无需依赖安装),避免了依赖安装不全的问题。导入直接改为这样即可:
import { ProjectDetector } from '@arkts/project-detector/bundled'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的语言服务器中,我们使用vscode内置的文件系统监听器,将事件发送到language-server进程中并传给了ProjectDetector实例。
MIT