uni-app 打包发行h5后多次重新打包 chunk-vendors.js 上的 contenthash 一直变化 其它js文件不变

uni-app 打包发行h5后多次重新打包 chunk-vendors.js 上的 contenthash 一直变化 其它js文件不变

示例代码:

module.exports = {  
 configureWebpack: config => {  

   config.optimization={  
         ...config.optimization,  
      chunkIds:"named",  
      moduleIds:"hashed",  
       splitChunks:{  
           cacheGroups:{  
               vendors:{  
                   name:'chunk-vendors',  
                   priority:10,  
                   test:/[\\\/]node_modules[\\\/]/,  
                   chunks: 'initial',  
               },  
               common:{  
                   name:'chunk-common',  
                   priority:1,  
                   minChunks: 2,  
                   chunks: 'all',  
                   reuseExistingChunk: true  
               }  
           }  
       }  
   }  
}  

操作步骤:

  • 直接点击[发行]-[网站-pc]

预期结果:

希望不改变内容情况下 chunk-vendors.js的hash值也不改变

实际结果:

每次都会改变 chunk-vendors.js的hash值

bug描述:

不修改代码,每次点击发布到h5后,其它js文件的contenthash值不会改变,只有chunk-vendors.js的contenthash值会发生改变


更多关于uni-app 打包发行h5后多次重新打包 chunk-vendors.js 上的 contenthash 一直变化 其它js文件不变的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

排查问题发现就是 启用摇树优化 导致的问题,空项目和取消摇树优化不会出现该问题

更多关于uni-app 打包发行h5后多次重新打包 chunk-vendors.js 上的 contenthash 一直变化 其它js文件不变的实战教程也可以访问 https://www.itying.com/category-93-b0.html


你好我看到你的帖子,宽屏适配中canvas组件报错已锁定回复,是不是这个问题解决了?

这个问题是由于 webpack 的缓存机制导致的。chunk-vendors.js 包含了 node_modules 中的依赖,即使你没有修改代码,但以下因素可能导致其 hash 变化:

  1. webpack 内部模块顺序:webpack 在构建时模块的解析顺序可能微调
  2. 时间戳或构建环境变量:构建过程可能包含时间戳等变量
  3. 依赖版本元数据:package-lock.json 或 yarn.lock 中的元数据变化

解决方案:

修改你的 vue.config.js 配置:

const { defineConfig } = require('[@vue](/user/vue)/cli-service')

module.exports = defineConfig({
  configureWebpack: {
    optimization: {
      moduleIds: 'deterministic',
      chunkIds: 'deterministic',
      splitChunks: {
        cacheGroups: {
          vendors: {
            name: 'chunk-vendors',
            test: /[\\/]node_modules[\\/]/,
            priority: 10,
            chunks: 'initial',
            enforce: true
          },
          common: {
            name: 'chunk-common',
            minChunks: 2,
            priority: 5,
            chunks: 'initial',
            reuseExistingChunk: true
          }
        }
      }
    }
  }
})
回到顶部