uni-app 通过官方教程cli生成的项目 public文件夹的静态资源build时不能复制到最终的打包文件里

uni-app 通过官方教程cli生成的项目 public文件夹的静态资源build时不能复制到最终的打包文件里

开发环境 版本号 项目创建方式
Mac macOS big sur CLI

操作步骤:

[, [https://uniapp.dcloud.io/quickstart-cli?id=创建uni-app]] public文件夹放一个图片 执行命令npm run build 生成的dist/build/H5目录里没有对应的图片


### 预期结果:

任何放置在 public 文件夹的静态资源打包都会被简单的复制

实际结果:

public文件夹的静态资源无法打包到最终目录里


### bug描述:

通过官方教程cli生成的项目[https://uniapp.dcloud.io/quickstart-cli?id=创建uni-app]
public文件夹的静态资源在build时,不能复制到最终的打包文件里[https://cli.vuejs.org/zh/guide/html-and-static-assets.html#public-文件夹]

更多关于uni-app 通过官方教程cli生成的项目 public文件夹的静态资源build时不能复制到最终的打包文件里的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

已解决 const path = require(‘path’);
const CopyWebpackPlugin = require(‘copy-webpack-plugin’); // 最新版本copy-webpack-plugin插件暂不兼容,推荐v5.0.0
module.exports = {
configureWebpack: {
plugins: process.env.UNI_PLATFORM === ‘H5’ ? [
new CopyWebpackPlugin([
{
from: path.join(__dirname, ‘public’),
to: path.join(
__dirname,
‘dist’,
process.env.NODE_ENV === ‘production’ ? ‘build’ : ‘dev’,
process.env.UNI_PLATFORM
)
}
])
] : []
}
}

更多关于uni-app 通过官方教程cli生成的项目 public文件夹的静态资源build时不能复制到最终的打包文件里的实战教程也可以访问 https://www.itying.com/category-93-b0.html


根据你的描述,这个问题确实存在。在 uni-app CLI 项目中,public 文件夹的静态资源默认不会在构建时自动复制到最终输出目录。这与 Vue CLI 的预期行为不同。

原因分析: uni-app 的构建流程基于 webpack,但针对多端输出做了定制化处理。public 文件夹的复制逻辑在 uni-app 的构建配置中默认未开启,需要手动配置。

解决方案: 在项目根目录的 vue.config.js 文件中添加以下配置(如没有该文件则新建):

const path = require('path')
const CopyWebpackPlugin = require('copy-webpack-plugin')

module.exports = {
  configureWebpack: {
    plugins: [
      new CopyWebpackPlugin({
        patterns: [
          {
            from: path.resolve(__dirname, 'public'),
            to: path.resolve(__dirname, 'dist', process.env.UNI_PLATFORM, 'public'),
            toType: 'dir',
            noErrorOnMissing: true
          }
        ]
      })
    ]
  }
}
回到顶部