uni-app 【报Bug】npm run dev:app-harmony希望能直接指向dedebug/app-harmony@1.3.7目录

发布于 1周前 作者 htzhanglong 来自 Uni-App

uni-app 【报Bug】npm run dev:app-harmony希望能直接指向dedebug/app-harmony@1.3.7目录

项目信息 详细信息
产品分类 uniapp/App
PC开发环境操作系统 Mac
PC开发环境操作系统版本号 14.5
手机系统 HarmonyOS NEXT
手机系统版本号 HarmonyOS NEXT Developer Beta1
手机厂商 华为
手机机型 mate60 pro
页面类型 vue
vue版本 vue3
打包方式 离线
项目创建方式 CLI
CLI版本号 5.0

操作步骤:

  • npm run dev:app-harmony

预期结果:

  • 运行到鸿蒙目录,而非dist/dev/app-harmony,或者通过软链接进行关联

实际结果:

  • 运行到dist/dev/app-harmony非常容易造成误导,而且已配置签名的情况下需要重新签名,非常麻烦

bug描述:

在配置了app签名的情况下由于每次点击运行到鸿蒙都要重新签名,并且一部分开发电脑运行会很慢,希望直接通过npm run dev:app-harmony能配置编译运行目录或者直接运行到debug/app-harmony@1.3.7目录,而不是编译到dist/dev/app-harmony目录!


4 回复

可以通过设置环境变量 UNI_OUTPUT_DIR 来处理,例如设置 H5 的 release 环境打包目录: “scripts”: {
“build:h5:release”: “cross-env NODE_ENV=release UNI_PLATFORM=h5 UNI_OUTPUT_DIR=dist/release/h5 vue-cli-service uni-build --mode release”
} 代码会输出至当前项目的 dist/release/h5 目录下,鸿蒙同理。


harmony好像不生效,还是我写法不对? 比如dev运行调试: { … “scripts”: { … “dev:app-harmony”: “uni -p app-harmony UNI_OUTPUT_DIR=dist/debug/app-harmony@1.3.7/entry/src/main/resources/rawfile/apps/HBuilder/www”, } }

回复 2***@qq.com: 你这种写法是给 uni 程序传递了一个参数进去,这是没有用的,需要做的是在执行 uni 这个命令的时候 UNI_OUTPUT_DIR 这个环境变量要指向你期望的目录。具体如何设置取决于你自己的喜好,比如用前面例子中的 cross-env。

在处理uni-app项目时,如果希望npm run dev:app-harmony命令直接指向特定的调试目录(如debug/app-harmony@1.3.7),通常这意味着你需要配置项目的npm脚本以及可能的webpack或其他构建工具来确保使用正确的资源或依赖。

以下是一个可能的解决方案,假设你已经有一个uni-app项目,并且想要通过修改npm脚本来达到目的。这里不涉及直接修改uni-app的内部机制,而是通过配置来实现目标。

  1. 确保你的项目结构: 假设你的项目结构如下:

    my-uni-app/
    ├── debug/
    │   └── app-harmony@1.3.7/
    │       └── ... (相关资源)
    ├── node_modules/
    ├── package.json
    └── ...
    
  2. 修改package.json: 在package.json中,你可以定义一个自定义的npm脚本来设置环境变量或者直接修改构建配置,指向debug/app-harmony@1.3.7目录。但是,由于uni-app的构建系统较为封闭,直接指定目录可能不现实,我们可以通过复制或链接的方式来实现。

    这里给出一个示例,使用cp命令(在Windows上可以使用xcopy或相应的命令)将调试目录复制到某个构建过程中可访问的位置,然后修改webpack配置(如果适用)来使用该目录。不过,由于uni-app主要使用Vite或HBuilderX内置的构建系统,直接修改webpack配置可能不适用。因此,这里假设我们使用一种更通用的方法——环境变量和符号链接。

    "scripts": {
      "prepare-debug": "rm -rf temp-debug && ln -s ./debug/app-harmony@1.3.7 temp-debug",
      "dev:app-harmony": "npm run prepare-debug && uni-app-cli serve --platform app-harmony"
    }
    

    在这个例子中,prepare-debug脚本创建了一个指向debug/app-harmony@1.3.7的符号链接(在Windows上,你需要使用适当的命令创建符号链接)。然后dev:app-harmony脚本先运行prepare-debug,再启动uni-app的开发服务器。

  3. 使用符号链接: 注意,符号链接的使用依赖于操作系统,Linux/macOS使用ln -s,Windows上可以使用mklink /D

  4. 运行命令: 现在,你可以通过运行npm run dev:app-harmony来启动开发服务器,它应该会使用debug/app-harmony@1.3.7目录中的资源(如果构建系统正确识别了符号链接)。

这种方法依赖于uni-app构建系统如何处理项目根目录下的资源。如果uni-app构建系统有特殊的要求或限制,可能需要进一步调整策略。

回到顶部