HarmonyOS鸿蒙Next中如何在hvigorfile.ts中获取当前指定的product和所有的target

HarmonyOS鸿蒙Next中如何在hvigorfile.ts中获取当前指定的product和所有的target 我的需求是在每次编译前,做一些资源替换,需要根据不同的product和target替换不同的资源,

我该如何获取当前编译指定的是哪个product和target

3 回复
import { appTasks, OhosPluginId, OhosAppContext, AppJson } from '@ohos/hvigor-ohos-plugin';
import { hvigor, getNode, HvigorNode  } from '@ohos/hvigor';
hvigor.getRootNode().afterNodeEvaluate(rootNode => {
  // 获取app插件的上下文对象
  const appContext = rootNode.getContext(OhosPluginId.OHOS_APP_PLUGIN) as OhosAppContext;
  const CurrentProduct = appContext.getCurrentProduct()
  console.log("CurrentProduct",CurrentProduct.getProductName())
  const entryNode = hvigor.getNodeByName('entry')
  entryNode.afterNodeEvaluate(node => {
    const hapContext = node.getContext(OhosPluginId.OHOS_HAP_PLUGIN) as OhosHapContext;
      hapContext?.targets((target: Target) => {
          const targetName = target.getTargetName();
        console.log("targetName",targetName)
      });
  })
})

更多关于HarmonyOS鸿蒙Next中如何在hvigorfile.ts中获取当前指定的product和所有的target的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,hvigorfile.ts用于定义构建脚本。要获取当前指定的product和所有的target,可以使用以下方法:

  1. 获取当前指定的product: 通过project.getProduct()方法可以获取当前指定的product

    const product = project.getProduct();
    console.log(`Current product: ${product}`);
    
  2. 获取所有的target: 通过project.getTargets()方法可以获取所有的target

    const targets = project.getTargets();
    console.log(`All targets: ${targets.join(', ')}`);
    

这两个方法可以直接在hvigorfile.ts中使用,以获取当前构建环境中的producttarget信息。

在HarmonyOS鸿蒙Next中,您可以通过hvigorfile.ts中的producttargets属性来获取当前指定的product和所有target。使用this.product获取当前指定的product,this.targets获取所有target。例如:

const currentProduct = this.product;
const allTargets = this.targets;

currentProduct将包含当前指定的product信息,allTargets将包含所有target的数组。

回到顶部