問心
問心
  • 发布:2024-07-30 13:57
  • 更新:2024-07-30 14:34
  • 阅读:119

【报Bug】HBuilderX离线打包没有把static目录下的图标资源打包

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Win10

HBuilderX类型: 正式

HBuilderX版本号: 4.24

手机系统: Android

手机系统版本号: Android 11

手机厂商: 小米

手机机型: Redmi

页面类型: vue

vue版本: vue3

打包方式: 离线

项目创建方式: HBuilderX

示例代码:

pages.josn

"tabBar": {  
        "color": "#333",  
        "selectedColor": "#D6001C",  
        "borderStyle": "white",  
        "backgroundColor": "#ffffff",  
        // #ifndef H5 || MP  
        "midButton": {  
            "height": "70px",  
            "text": "开门",  
            "iconPath": "static/tab-bar/open_door.png",  
            // "iconPath": "static/tab-bar/open_room.png",  
            "iconWidth": "50px"  
        },  
        // #endif  
        "list": [{  
                "pagePath": "pages/index/index",  
                "iconPath": "static/tab-bar/home.png",  
                "selectedIconPath": "static/tab-bar/home-selected_01.png",  
                "text": "首页"  
            },  
            // #ifdef APP-PLUS  
            {  
                "pagePath": "pages/empty/empty1",  
                "iconPath": "static/tab-bar/health.png",  
                "selectedIconPath": "static/tab-bar/health-selected.png",  
                "text": "健康"  
            },  
            // #endif  
            // #ifdef APP-PLUS || MP  
            {  
                "pagePath": "pages/empty/empty2",  
                "iconPath": "static/tab-bar/open_room.png",  
                "selectedIconPath": "static/tab-bar/open_room-selected.png",  
                "text": "房产"  
            },  
            // {  
            //  "pagePath": "pages/empty/empty2",  
            //  "iconPath": "static/tab-bar/opendoor.png",  
            //  "selectedIconPath": "static/tab-bar/opendoor-selected.png",  
            //  "text": "开门"  
            // },  
            // #endif  
            // #ifdef APP-PLUS  
            {  
                "pagePath": "pages/empty/empty3",  
                "iconPath": "static/tab-bar/car.png",  
                "selectedIconPath": "static/tab-bar/car-selected.png",  
                "text": "汽车"  
            },  
            // #endif  
            {  
                "pagePath": "pages/user/user",  
                "iconPath": "static/tab-bar/mine.png",  
                "selectedIconPath": "static/tab-bar/mine-selected_01.png",  
                "text": "我的"  
            }  
        ]  
    },

vite.config.ts

import path from "path";  
import {  
    ConfigEnv,  
    defineConfig,  
    loadEnv  
} from 'vite'  
import uni from '@dcloudio/vite-plugin-uni'  
// 可以动态处理html文件内容的  
import { createHtmlPlugin } from 'vite-plugin-html'  

// 动态修改appid  
import VITE_USER_CONFIG from './config/appConfig.js';  
require('./config/modifyManifest.js');  
const isH5 = process.env.UNI_PLATFORM === 'h5'  
const isApp = process.env.UNI_PLATFORM === 'app'  
const resolve = (p : string) => {  
    return path.resolve(__dirname, p);  
};  

// vite 插件配置,注意一定要把 uni 注册在 vwt 前  
const vitePlugins = [];  

const viteConfig = defineConfig(({  
    mode,  
    command  
} : ConfigEnv) => {  
    // console.log('mode', mode)  
    // 根据当前工作目录中的 `mode` 加载 .env 文件  
    // 设置第三个参数为 '' 来加载所有环境变量,而不管是否有 `VITE_` 前缀。  
    // const env = loadEnv(mode, process.cwd(), '')  
    let env = loadEnv(mode, process.cwd())  
    if (!env.VITE_APP_BASE_URL && env.VITE_ROOT_DIR) {  
        env = Object.assign({}, loadEnv(mode, env.VITE_ROOT_DIR), env)  
    }  
    const manifestPath = resolve('manifest.json');  
    vitePlugins.push(uni({ manifestPath }))  
    // console.log('mode', uni,manifestPath)  
    const CONFIG = Object.assign({}, VITE_USER_CONFIG.default, VITE_USER_CONFIG[process.env.UNI_SCRIPT])  

    /**  
     * @type {import('vite').UserConfig}  
     */  
    const config = {  
        // 环境变量配置  
        define: {  
            'process.env.VITE_USER_CONFIG': JSON.stringify(CONFIG),  
        },  
        // 其他配置项  
        optimizeDeps: {  
            include: ['crypto-js']  
        },  
        // plugins: vitePlugins,  
        plugins: [ // plugins 表示插件  
            ...vitePlugins,  
            // 使用修改html 的插件  
            createHtmlPlugin({  
                inject: {  
                    data: {  
                        // 定义了一个title 变量,可以被html中进行引用  
                        title: CONFIG.name,  
                    }  
                }  
            })  
        ]  
    }  
    if (command === 'serve') { // dev 独有配置  
        // config.server = {  
        //  host: "0.0.0.0", // 开发时或独立部署时服务器的ip或域名  
        //  // port: env.VITE_PORT as unknown as number, // 服务器端口号  
        //  port: 8099, // 服务器端口号  
        //  // open: env.VITE_OPEN === 'true', // 是否自动打开浏览器  
        //  hmr: true, // 启用热更新  
        //  proxy: {  
        //      '/api': {  
        //          target: env.VITE_APP_BASE_URL, // 目标服务器地址  
        //          changeOrigin: true, // 是否修改请求头中的 Origin 字段  
        //          // rewrite: (path : string) => path.replace(/^\/api/, '')  
        //      },  
        //      '/mobile/admin': {  
        //          target: env.VITE_APP_BASE_URL, // 目标服务器地址  
        //          changeOrigin: true, // 是否修改请求头中的 Origin 字段  
        //          rewrite: (path : string) => path.replace(/^\/mobile/, '')  
        //      }  
        //  },  
        // }  
        config.build = {  
            sourcemap: true,  
        }  
    } else { // build 独有配置  
        // command === 'build'  
        /*打包的时候不输出map文件,减少大量体积*/  
        config.productionSourceMap = false  
        config.build = {  
            sourcemap: false,  
            //发布时删除 console  
            minify: 'terser',  
            terserOptions: {  
                compress: {  
                    drop_console: false,  
                    drop_debugger: false,  
                },  
            },  
            // lib: {  
            //  entry: path.resolve(__dirname, './src/components/index.ts'),  
            //  name: 'libs',  
            //  fileName: (format) => `isafety-ui.${format}.js`,  
            //  formats: ['es'], // 默认['es', 'umd']  
            // },  
            // },  
        }  
        if (isH5 == true) {  
            config.build.rollupOptions = {  
                // 静态资源分类打包  
                output: {  
                    // 确保外部化处理那些你不想打包进库的依赖  
                    external: ['vue'],  
                    // 在 UMD 构建模式下为这些外部化的依赖提供一个全局变量  
                    globals: { vue: 'Vue', },  
                    chunkFileNames: 'static/js/[name]-[hash].js',  
                    entryFileNames: 'static/js/[name]-[hash].js',  
                    assetFileNames: 'static/[ext]/[name]-[hash].[ext]',  
                    format: 'es', // 默认'es'  
                    // manualChunks(id) {  
                    //  // 静态资源分拆打包  
                    //  if (id.includes('node_modules')) {  
                    //      return id  
                    //          .toString()  
                    //          .split('node_modules/')[1]  
                    //          .split('/')[0]  
                    //          .toString()  
                    //  }  
                    // },  
                }  
            }  
        }  
    }  
    return config  
})  
// https://vitejs.dev/config/  
export default viteConfig

操作步骤:

发行-》原生app本地打包-》生成本地打包app资源

预期结果:

打包后的static包含pages.josn使用的图片

实际结果:

static下的tab-bar目录为空

bug描述:

使用vue3+vite离线打包的方式生成本地app资源时没有把static下的图片资源一起打包,static下的图片在pages.json的tabbar中使用

2024-07-30 13:57 负责人:无 分享
已邀请:
DCloud_UNI_yuhe

DCloud_UNI_yuhe

你这是你自己配置的问题吧,我刚才测试了能打包进去。

  • 問心 (作者)

    配置问题,vite.config.ts配置文件在上面也贴出来了,帮忙看看是哪个问题

    2024-07-31 09:13

  • 問心 (作者)

    项目是vue2迁移到vue3的

    2024-07-31 09:14

要回复问题请先登录注册