Copy folder recursively in Node.js

前端 未结 25 2024
隐瞒了意图╮
隐瞒了意图╮ 2020-12-04 07:44

Is there an easier way to copy a folder and all its content without manually doing a sequence of fs.readir, fs.readfile, fs.writefile

25条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-12-04 08:12

    I wrote this function for both copying (copyFileSync) or moving (renameSync) files recursively between directories:

    // Copy files
    copyDirectoryRecursiveSync(sourceDir, targetDir);
    // Move files
    copyDirectoryRecursiveSync(sourceDir, targetDir, true);
    
    
    function copyDirectoryRecursiveSync(source, target, move) {
        if (!fs.lstatSync(source).isDirectory())
            return;
    
        var operation = move ? fs.renameSync : fs.copyFileSync;
        fs.readdirSync(source).forEach(function (itemName) {
            var sourcePath = path.join(source, itemName);
            var targetPath = path.join(target, itemName);
    
            if (fs.lstatSync(sourcePath).isDirectory()) {
                fs.mkdirSync(targetPath);
                copyDirectoryRecursiveSync(sourcePath, targetDir);
            }
            else {
                operation(sourcePath, targetPath);
            }
        });
    }
    

提交回复
热议问题