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

Node.js中如何将多个目录复制到一个目录?

当然有更简便的方法!正好你想要的数组式多源目录复制在Node.js生态里完全可以实现,下面给你两种靠谱方案:

方案1:用fs-extra实现你想要的极简写法(推荐)

fs-extra是Node.js原生fs模块的增强版,它直接支持数组形式的源路径,完美匹配你想要的fs.copy([dir1, dir2], dest)调用方式。

步骤:

  1. 先安装依赖:
npm install fs-extra
  1. 代码实现:
const fs = require('fs-extra');

// 完全符合你想要的写法
fs.copy(['dir1', 'dir2'], 'destDirString')
  .then(() => {
    cb(); // 你的回调逻辑
  })
  .catch(err => {
    console.error('复制出错:', err);
  });

如果你习惯用async/await,写法更清爽:

const fs = require('fs-extra');

async function copyMultipleDirs() {
  try {
    await fs.copy(['dir1', 'dir2'], 'destDirString');
    cb();
  } catch (err) {
    console.error('复制出错:', err);
  }
}

copyMultipleDirs();
方案2:基于你现有ncp的简化写法

如果你不想引入新库,也可以用Promise.all把两次ncp调用合并成一个异步流程,避免重复写then回调:

代码实现:

const ncp = require('ncp').ncp;
const { promisify } = require('util');

// 把ncp转换成Promise版本
const copyDir = promisify(ncp);

// 并行执行两个复制任务
Promise.all([
  copyDir('dir1', 'destDirString'),
  copyDir('dir2', 'destDirString')
])
.then(() => {
  cb(); // 两个任务都完成后执行回调
})
.catch(err => {
  console.error('复制出错:', err);
});
重要注意事项

不管用哪种方案,如果两个源目录里有同名文件/文件夹,后复制的目录会覆盖先复制的内容。如果需要处理冲突逻辑,你可能需要额外添加文件存在性检查的逻辑。

内容的提问来源于stack exchange,提问作者Union find

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:49:05