HarmonyOS鸿蒙Next中hvigor插件开发如何获取当前的项目路径

HarmonyOS鸿蒙Next中hvigor插件开发如何获取当前的项目路径 像一些常见的需求,比如构建前的代码检查,基础配置的检查等等,我们往往需要获取当前的项目路径,项目下的各个模块,甚至于项目下的各个文件,那么,这些功能,我们如何获取呢,目前官方中有多种方式供大家选择,我们就一一概述一下。

3 回复

像一些常见的需求,比如构建前的代码检查,基础配置的检查等等,我们往往需要获取当前的项目路径,项目下的各个模块,甚至于项目下的各个文件,那么,这些功能,我们如何获取呢,目前官方中有多种方式供大家选择,我们就一一概述一下。

首先是HvigorNode,它是hvigor中的节点模型接口,通过它,我们可以获取到模块的配置,属性和任务等。

还记得上篇文章中,我们的插件开发是在哪里编写代码的吗?是不是我们自定义了一个插件的方法,实现了一个apply方法,在这个方法中,我们接收了一个参数,这个参数就是HvigorNode类型,里面提供了诸多方法,可以满足我们对项目的操作。

function myPlugin(): HvigorPlugin {
  return {
    pluginId: 'myPlugin',
    apply(node: HvigorNode) {
      // 插件主体
      console.log('我是一个简单的插件');
    }
  }
}

HvigorNode中的方法介绍

1、获取当前节点路径

获取节点路径,也就是获取当前的项目路径,可以getNodePath()方法来获取,代码如下:

cke_969.png

2、获取当前节点名称

节点名称,可以通过getNodeName()方法来获取,直接获取的就是当前项目的名字。

cke_3169.png

3、获取项目下所有的子节点

项目下的子节点获取可以通过subNodes()方法来获取,此方法获取的是独立的模块信息,其他的文件不会返回。

cke_5284.png

4、根据节点名称获取节点对象

如果你不想通过遍历拿到子节点,你也可以通过已知的模块名字来获取,也就是通过getSubNodeByName()方法。

 const subNode = node.getSubNodeByName('entry');
 console.log(subNode);

5、获取父级节点对象

获取父级节点对象,可以getParentNode()方法来获取,使用这个方法有一点需要注意,那就是只适用于项目子节点的获取,如果在项目节点上获取是为undefined的,所以,千万不要直接通过项目节点来获取父节点。

以下的代码是没问题的,通过项目节点获取。

//获取子节点
      node.subNodes((childDode: HvigorNode) => {
        //获取父节点
        const parentNode = childDode.getParentNode();
        console.log(parentNode.getNodeName());
      })

6、节点注册任务

注册任务,它会在hvigor生命周期中的配置阶段中执行,注册任务需完成HvigorTask的实现作为入参对象。

node.registerTask({
    name: 'myTask',
    run() {
        console.log('myTask');
    }
});

7、节点中已注册的Task对象

node.getTaskByName('myTask')

8、pluginId获取当前节点信息

这种情况也能获取到项目的相关信息,比如项目的名字,路径等等。

 const appContext = node.getContext(OhosPluginId.OHOS_APP_PLUGIN) as OhosAppContext;
  console.log('projectName:', appContext.getProjectName());

9、获取当前节点已加载的pluginId集合

 const allPluginIds = node.getAllPluginIds();
            allPluginIds.forEach((id) => {
                console.log(id);
            })

10、添加拓展属性

 node.addExtraOption('key', 'value');

11、根据节点名称获取节点对象

node.getExtraOption('key');

12、添加一个node评估前的回调函数

node.beforeNodeEvaluate(hvigorNode => {
       
      })

13、添加一个node评估后的回调函数

node.afterNodeEvaluate(hvigorNode => {
        
      })

相关总结

HvigorNode,在实际的开发中,可以辅助我们获取项目及子模块的信息,便于我们对文件的操作,十分的方便,它可以应用与两种插件的实现方式,极大的提高了我们编写插件的效率。

更多关于HarmonyOS鸿蒙Next中hvigor插件开发如何获取当前的项目路径的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next的hvigor插件开发中,可以通过Project对象获取项目路径。使用project.getProjectDir().getAbsolutePath()方法即可获得当前项目的绝对路径。此路径指向项目的根目录。

在HarmonyOS Next的hvigor插件开发中,获取项目路径是常见需求。以下是几种核心方法:

  1. 通过Project对象获取 在插件apply函数中,参数Project对象直接提供了项目根目录路径:

    project.getProjectDir().getAbsolutePath()
    
  2. 通过Task执行上下文获取 在自定义Task的execute方法中,可通过TaskContext获取:

    context.getProject().getProjectDir().getAbsolutePath()
    
  3. 遍历多模块项目 要获取子模块路径,可遍历项目子项目:

    project.getSubprojects().forEach { subProject ->
        val modulePath = subProject.getProjectDir().getAbsolutePath()
        // 处理每个模块
    }
    
  4. 访问项目文件 结合项目路径进行文件操作:

    val configFile = File(project.getProjectDir(), "hvigorfile.ts")
    if (configFile.exists()) {
        // 读取或检查配置文件
    }
    

这些方法覆盖了插件开发中获取项目信息的核心场景,可根据具体需求选择使用。

回到顶部