Синхронизировать файлы из одного каталога в другой в Node?

Я использовал cpy с шаблоном подстановки, чтобы найти и скопировать все файлы в src/main/css и поместить их в ./dist.

Однако теперь у меня также есть подкаталоги ниже src/main/css (например, src/main/css/margins/index.css), и cpy не включает их при копировании файлов.

Есть ли в Node API (fs или path?), Который обрабатывает этот случай, или кто-нибудь знает удобный пакет?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
67
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

В итоге я использовал copy-dir

require('copy-dir').sync(PLI.src.main.css, PLI.DIST);

Если у кого-то есть способ сделать то же самое с Node и избежать зависимостей, сообщите об этом.

Попробуй это.

const fs = require('fs');
const path = require('path');

var mkdir = function (dir) {
    // making directory without exception if exists
    try {
        fs.mkdirSync(dir, 0755);
    } catch (e) {
        if (e.code != "EEXIST") {
            throw e;
        }
    }
};

var copy = function (src, dest) {
    var readS = fs.createReadStream(src);
    var writeS = fs.createWriteStream(dest);
    readS.pipe(writeS);

    readS.on("end", function () {
        // Operation done
    });
};

var copyDir = function (src, dest) {
    mkdir(dest);
    var files = fs.readdirSync(src);
    for (var i = 0; i < files.length; i++) {
        var current = fs.lstatSync(path.join(src, files[i]));
        if (current.isDirectory()) {
            copyDir(path.join(src, files[i]), path.join(dest, files[i]));
        } else if (current.isSymbolicLink()) {
            var symlink = fs.readlinkSync(path.join(src, files[i]));
            fs.symlinkSync(symlink, path.join(dest, files[i]));
        } else {
            copy(path.join(src, files[i]), path.join(dest, files[i]));
        }
    }
};

copyDir('./src', './dest');

Этот фрагмент кода вдохновлен https://gist.github.com/tkihira/3014700. Я внес некоторые изменения в исходный код, чтобы заставить его работать, поскольку теперь util.pump устарел.

Другие вопросы по теме