You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Webpack CopyPlugin复制嵌套目录及所有文件?

Webpack CopyPlugin 复制嵌套目录及文件的正确配置

你需要保留源目录的完整嵌套结构复制到目标路径,当前配置的问题在于to字段使用的[folder]占位符只能捕获文件的直接父目录,无法保留多层嵌套层级。以下是两种可行的解决方案:

方案一:直接复制整个目录(推荐)

这种方式最简单,直接指定源目录和目标目录,CopyPlugin会自动递归复制所有子目录和文件,完全保留原结构:

const path = require('path');
const CopyPlugin = require('copy-webpack-plugin');

module.exports = {
  // ...其他Webpack配置项
  plugins: [
    new CopyPlugin({
      patterns: [
        {
          from: path.resolve(__dirname, "src/styles/directory"),
          to: path.resolve(__dirname, "lib/styles/directory"),
          // 可选配置:如需匹配隐藏文件或调整匹配规则,可添加globOptions
          globOptions: {
            dot: true, // 允许匹配隐藏文件
            nodir: false, // 不忽略目录,确保子目录被递归处理
          }
        },
      ],
    }),
  ],
};

方案二:通过Glob模式精细控制复制

如果需要针对特定文件类型或路径做过滤,可以使用**/*匹配所有子目录和文件,配合[path]占位符保留完整嵌套路径:

const path = require('path');
const CopyPlugin = require('copy-webpack-plugin');

module.exports = {
  // ...其他Webpack配置项
  plugins: [
    new CopyPlugin({
      patterns: [
        {
          from: "**/*", // 匹配基准目录下的所有文件和子目录
          context: path.resolve(__dirname, "src/styles/directory"), // 指定相对路径的基准目录
          to: path.resolve(__dirname, "lib/styles/directory/[path][name][ext]"), // [path]保留完整嵌套路径
        },
      ],
    }),
  ],
};

原配置问题说明

你之前使用的[folder]占位符仅能获取文件的直接父目录,无法承载多层嵌套的路径结构,因此会导致子目录层级丢失。替换为[path]占位符(方案二)或直接复制整个目录(方案一),即可实现你期望的输出结构。

内容的提问来源于stack exchange,提问作者Jake Metz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 15:40:23