使用copy-webpack-plugin实现资源拷贝时出现Can't resolve './src'报错
报错根因
核心配置缺失触发入口解析错误
- 当前导出的配置仅包含插件逻辑,未声明webpack必需的入口(entry)配置。webpack5默认以
./src/index.js为入口文件,缺失基础配置时无法定位入口模块,直接抛出Can't resolve './src'错误。 - 配置导出结构不符合规范:将插件逻辑单独封装为
images对象后直接导出数组时,数组内每一项都必须是完整可独立运行的webpack配置,不能仅携带插件字段。 - webpack5默认输出根路径为项目根目录下的
dist文件夹,不需要在路径配置中硬编码dist前缀,重复声明会导致目录嵌套错误。
copy-webpack-plugin 9.x版本匹配规则配置错误
- 当前
from: 'src/assets/*'的通配符仅能匹配assets目录下的一级文件,无法递归拷贝子目录、嵌套文件内容;要实现全量递归匹配,需要将通配符调整为**/*。 - 配置中
to: 'dist/assets/*'的写法冗余:webpack会自动将to的相对路径映射到默认的dist输出根目录下,写死dist前缀会生成dist/dist/assets的错误嵌套目录。
可直接运行的正确配置
const CopyPlugin = require("copy-webpack-plugin"); module.exports = { // 补全入口配置,解决入口解析报错 entry: './src/index.js', output: { // 显式声明输出路径,和webpack默认规则保持一致 path: `${__dirname}/dist`, clean: true // 每次打包前自动清空dist旧内容 }, plugins: [ new CopyPlugin({ patterns: [ { // 递归匹配assets目录下所有文件、子文件夹 from: 'src/assets/**/*', // 映射到dist/assets目录下,无需添加dist前缀 to: 'assets/[path][name][ext]' } ] }) ] }
补充说明
- 若需要使用多配置数组导出(如同时配置开发、生产两套构建规则),数组内每一项都需要完整包含entry、output等核心字段,不能仅单独抽出插件配置导出。
- copy-webpack-plugin 9.x版本支持直接指定文件夹路径做全量拷贝,比如写成
from: 'src/assets'、to: 'assets',无需手动添加通配符,也能实现递归拷贝整个文件夹的效果。
内容的提问来源于stack exchange,提问作者Rain Man
相关产品推荐
相关产品推荐

