关于DevEco Studio中devDependencies的理解

关于DevEco Studio中devDependencies的理解

官网上的解释是,DevDependencies里的依赖不会发布到生产。是不是可以理解为DevDependencies中的配置依赖不会编译到release包中?

但是我们工程里,所有依赖的都是在DevDependencies中配置的,dependencies中也没有配置,而且项目中确实还使用了依赖包。按照官网的解释,这样应该会在运行时找不到包才对,但是运行竟然没问题,有点不能理解

3 回复

【背景知识】

ohpm依赖配置说明:ohpm 存在 dependencies,devDependencies和dynamicDependencies 三种依赖类型。同时支持具体版本号,范围版本号,tag标签,本地har/tgz文件路径和本地源码目录多种方式引入依赖。

dependencies:生产依赖,即参与编译/运行阶段使用的依赖,用来定义生产态HAR/HSP包依赖,声明在代码中被import的三方库。如果被依赖的组件最终要与依赖的组件一起发布到目标机器(手机)上使用,则必须配置。

devDependencies:开发态依赖,只能参与项目的开发或测试阶段的依赖。如果被依赖的组件最终要与依赖的组件一起发布到目标机器(如手机)上使用,则不能配置在该字段中。

dynamicDependencies:动态依赖,用来配合动态import,表达动态import使用的HSP包依赖。动态依赖不会在加载时就被编译,而是根据条件导入模块或者按需导入模块,具有更高效的依赖加载速度。

【解决方案】

ohpm依赖中,如果仅仅是开发和调试阶段依赖的三方包,如三方测试框架、三方mock框架等,这些依赖不需要在正式发布的包里运行,所以应该使用devDependencies依赖;但是如果是发布后运行阶段依赖的三方包,如三方网络库、三方动画库等,应该使用dependencies。

如果所有依赖的都是在devDependencies中配置的,dependencies中没有配置,而且项目中确实还使用了依赖包,但是在运行时没有问题,应该是运行的包不是正式发布包,而是本地打包直接安装的。应用发布参考:发布HarmonyOS应用(HarmonyOS NEXT)


在DevEco Studio中,devDependencies是用于开发环境的依赖项配置,类似npm中的开发依赖概念。这些依赖仅作用于开发阶段(如构建工具、测试框架等),不会打包到最终应用包中。在鸿蒙应用开发中,可通过oh-package.json5文件的devDependencies字段声明,与dependencies区分开。典型场景包括IDE插件、代码检查工具等开发辅助模块的引入。安装时使用ohpm install --save-dev命令。

在HarmonyOS开发中,devDependenciesdependencies的区别确实需要明确:

  1. 对于纯HarmonyOS应用开发(非Node.js项目),DevEco Studio中的devDependencies主要是指开发阶段使用的工具链依赖(如编译器、测试框架等),这些确实不会打包到最终release中。

  2. 您遇到的情况可能有以下原因:

  • 如果是在JS/TS项目中,部分打包工具(如webpack)在开发模式时会将devDependencies也包含进来。
  • 某些依赖可能被间接引入(比如被主依赖包包含)。
  • 当前运行的是debug模式,开发环境可能自动包含了这些依赖。
  1. 建议检查:
  • 确认项目类型(纯HarmonyOS应用还是包含JS的前端项目)。
  • 查看实际打包后的模块大小,确认是否真的包含这些依赖。
  • 尝试打release包测试运行情况。

这种表现与具体项目配置和构建工具有关,需要结合具体项目分析。

回到顶部