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
已解决
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
}
]
})
]
}
}

