Внедрение файлов в условную CMS при помощи Gulp или другой системы сборки, с возможностью удаления из cms

Пытаюсь сделать внедрение модуля в cms.

Как я это вижу:

Я разрабатываю свой модуль в отдельной директории, с удобной мне иерархией. Для тестирования запускаю сборку проекта, проект внедряется в cms, пути ко всем внедрённым файлам записываются в отдельный файл в директории с несобранным проектом. При необходимости я могу одной командой, благодаря файлу, удалить все внедрённые файлы и записать их заново.

Тоже самое, если без файла, возможно организовать с префиксами к добавленным в cms файлам. При удалении искать файлы в cms по префиксу. Это решение написано для лучшего понимания проблемы, его реализация понятна, но сами перфекты - могут мешать.

Может есть готовые решениям/плагины - для такой задачи?


Ответы (1 шт):

Автор решения: Vitaly

На корявом галп'ийском реализовал требуемый мне функционал. Буду рад если укажете более верный путь или подправите мою реализацию.


const gulp = require('gulp');
const del = require('del');
const fs = require('fs');
const filenames = require("gulp-filenames");


function files_in_cms_delete(cb){
    var files_in_cms = files_in_cms_get();

    (async () => {
        const deletedFilePaths = await del(files_in_cms);
        console.log('Deleted files:\n', deletedFilePaths.join('\n'));
    })();
    
    fs.writeFileSync('cms_files2.json', '[]');

    return cb();
}


function files_in_cms_get(){
    var files_in_cms = [];
    
    try{
        var buffer = fs.readFileSync('cms_files2.json', 'utf8');
        files_in_cms = JSON.parse(buffer);
    }catch{ 
        fs.writeFileSync('cms_files2.json', '[]');
        files_in_cms = [];
    }

    return files_in_cms;
}


function files_in_cms_add_to_list(files = [], dirname = ""){
    var files_in_cms = files_in_cms_get();

    files.forEach(file => {
        var ful_path = dirname + file;

        if(files_in_cms.indexOf(ful_path) == -1){
            files_in_cms.push(ful_path);
        }
    });

    fs.writeFileSync('cms_files2.json', JSON.stringify(files_in_cms));
}


exports.del = files_in_cms_delete;

Для добавления в список файлов в процессе сборки:

        gulp.src(...)
            .pipe(...)
            .pipe(...)
            .pipe(gulp.dest('cms/'))
            .on('end', function() { 
                files_in_cms_add_to_list(filenames.get("adds"), 'cms/');
            })
            .pipe(filenames("adds"))

→ Ссылка