在 Node.js 中递归复制文件夹

新手上路,请多包涵

有没有一种更简单的方法来复制文件夹及其所有内容,而无需手动执行一系列 fs.readirfs.readfilefs.writefile 递归?

我只是想知道我是否缺少一个理想情况下可以像这样工作的功能:

fs.copy("/path/to/source/folder", "/path/to/destination/folder");


关于这个历史问题。请注意, fs.cpfs.cpSync 可以递归复制文件夹,并且在 Node v16+ 中可用

原文由 lostsource 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.4k
2 个回答

从 Node v16.7.0 开始,可以使用 fs.cpfs.cpSync 函数。

 fs.cp(src, dest, {recursive: true});

当前稳定性(在 Node v18.7.0 中)为 Experimental

原文由 Jax-p 发布,翻译遵循 CC BY-SA 4.0 许可协议

看起来 ncpwrench 都不再维护了。可能最好的选择是使用 fs-extra

Wrench 的开发者指示用户使用 fs-extra 因为他弃用了他的库

copySyncmoveSync 都将复制和移动文件夹,即使它们有文件或子文件夹,您也可以使用它轻松移动或复制文件

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

const srcDir = `path/to/file`;
const destDir = `path/to/destination/directory`;

// To copy a folder or file, select overwrite accordingly
try {
  fs.copySync(srcDir, destDir, { overwrite: true|false })
  console.log('success!')
} catch (err) {
  console.error(err)
}

要么

// To Move a folder or file, select overwrite accordingly
try {
  fs.moveSync(srcDir, destDir, { overwrite: true|false })
  console.log('success!')
} catch (err) {
  console.error(err)
}

原文由 Aryan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题