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

ReactJS中如何按原目录结构将SCSS及图片文件复制到dist包

解决SCSS与图片文件同步到dist并保留目录结构的方案

方案1:使用copyfiles工具(简单直接)

这是专门用于复制文件并保留目录结构的工具,无需复杂配置:

  1. 安装依赖:
npm install copyfiles --save-dev
  1. 在package.json的scripts中添加组合编译命令:
"scripts": {
  "build": "npx babel src/lib --out-dir dist && npx copyfiles -u 2 src/lib/**/*.{scss,png,jpg,jpeg,gif,svg} dist"
}
  • -u 2表示忽略路径的前2级(比如src/lib/components/style.scss会被复制到dist/components/style.scss,而非dist/src/lib/...)
  • **/*.{scss,png,...}匹配所有子目录下的目标文件类型

方案2:修复webpack配置(用copy-webpack-plugin)

如果坚持使用webpack,通过该插件可精准控制文件复制路径:

  1. 安装插件:
npm install copy-webpack-plugin --save-dev
  1. 修改webpack.config.js添加插件配置:
const CopyWebpackPlugin = require('copy-webpack-plugin');
const path = require('path');

module.exports = {
  // 其他webpack配置项...
  plugins: [
    new CopyWebpackPlugin({
      patterns: [
        {
          from: 'src/lib/**/*.{scss,png,jpg,jpeg,gif,svg}',
          to({ context, absoluteFilename }) {
            // 保留文件相对于src/lib的原有目录结构
            const relativePath = path.relative('src/lib', absoluteFilename);
            return path.join('dist', relativePath);
          }
        }
      ]
    })
  ]
};

配置完成后,运行webpack即可按原有目录结构复制目标文件到dist中。

方案3:使用rsync(Linux/macOS环境适用)

类Unix系统可直接用系统自带命令,无需额外安装依赖:

npx babel src/lib --out-dir dist && rsync -av --include='*.scss' --include='*.png' --include='*.jpg' --include='*.jpeg' --include='*.gif' --include='*.svg' --include='*/' --exclude='*' src/lib/ dist/
  • -a为归档模式(保留权限、目录结构),-v显示复制日志
  • 规则逻辑:先包含目标文件类型和所有子目录,再排除其他文件,确保仅复制需要的文件并保留结构

内容的提问来源于stack exchange,提问作者Amarathun Oshadie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 22:54:58