Внедрение файлов в условную CMS при помощи Gulp или другой системы сборки, с возможностью удаления из cms
Пытаюсь сделать внедрение модуля в cms.
Как я это вижу:
Я разрабатываю свой модуль в отдельной директории, с удобной мне иерархией. Для тестирования запускаю сборку проекта, проект внедряется в cms, пути ко всем внедрённым файлам записываются в отдельный файл в директории с несобранным проектом. При необходимости я могу одной командой, благодаря файлу, удалить все внедрённые файлы и записать их заново.
Тоже самое, если без файла, возможно организовать с префиксами к добавленным в cms файлам. При удалении искать файлы в cms по префиксу. Это решение написано для лучшего понимания проблемы, его реализация понятна, но сами перфекты - могут мешать.
Может есть готовые решениям/плагины - для такой задачи?
Ответы (1 шт):
На корявом галп'ийском реализовал требуемый мне функционал. Буду рад если укажете более верный путь или подправите мою реализацию.
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"))