feat(frontend): configure vendor build scripts and fallback templates
Co-authored-by: Junie <junie@jetbrains.com>
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
// Целевая папка для статики вендоров
|
||||
const targetDir = path.resolve(__dirname, '../public/static/vendor');
|
||||
|
||||
// Список файлов и директорий для копирования
|
||||
const itemsToCopy = [
|
||||
// Bootstrap 5 (CSS & JS bundle)
|
||||
{
|
||||
src: 'node_modules/bootstrap/dist/css/bootstrap.min.css',
|
||||
dest: 'bootstrap/bootstrap.min.css'
|
||||
},
|
||||
{
|
||||
src: 'node_modules/bootstrap/dist/css/bootstrap.min.css.map',
|
||||
dest: 'bootstrap/bootstrap.min.css.map'
|
||||
},
|
||||
{
|
||||
src: 'node_modules/bootstrap/dist/js/bootstrap.bundle.min.js',
|
||||
dest: 'bootstrap/bootstrap.bundle.min.js'
|
||||
},
|
||||
{
|
||||
src: 'node_modules/bootstrap/dist/js/bootstrap.bundle.min.js.map',
|
||||
dest: 'bootstrap/bootstrap.bundle.min.js.map'
|
||||
},
|
||||
|
||||
// Bootstrap Icons (CSS & WOFF/WOFF2 шрифты)
|
||||
{
|
||||
src: 'node_modules/bootstrap-icons/font/bootstrap-icons.min.css',
|
||||
dest: 'bootstrap-icons/bootstrap-icons.min.css'
|
||||
},
|
||||
{
|
||||
src: 'node_modules/bootstrap-icons/font/fonts/bootstrap-icons.woff2',
|
||||
dest: 'bootstrap-icons/fonts/bootstrap-icons.woff2'
|
||||
},
|
||||
{
|
||||
src: 'node_modules/bootstrap-icons/font/fonts/bootstrap-icons.woff',
|
||||
dest: 'bootstrap-icons/fonts/bootstrap-icons.woff'
|
||||
},
|
||||
|
||||
// HTMX
|
||||
{
|
||||
src: 'node_modules/htmx.org/dist/htmx.min.js',
|
||||
dest: 'htmx/htmx.min.js'
|
||||
},
|
||||
|
||||
// Alpine.js
|
||||
{
|
||||
src: 'node_modules/alpinejs/dist/cdn.min.js',
|
||||
dest: 'alpinejs/cdn.min.js'
|
||||
}
|
||||
];
|
||||
|
||||
console.log('Сборка и копирование вендорных библиотек в static/vendor/...');
|
||||
|
||||
let copiedCount = 0;
|
||||
|
||||
for (const item of itemsToCopy) {
|
||||
const srcPath = path.resolve(__dirname, item.src);
|
||||
const destPath = path.join(targetDir, item.dest);
|
||||
|
||||
if (!fs.existsSync(srcPath)) {
|
||||
console.warn(`Предупреждение: исходный файл не найден: ${item.src}`);
|
||||
continue;
|
||||
}
|
||||
|
||||
// Создаем папку назначения, если не существует
|
||||
const destDirPath = path.dirname(destPath);
|
||||
if (!fs.existsSync(destDirPath)) {
|
||||
fs.mkdirSync(destDirPath, { recursive: true });
|
||||
}
|
||||
|
||||
fs.copyFileSync(srcPath, destPath);
|
||||
console.log(` Скопировано: ${item.src} -> ${path.relative(path.resolve(__dirname, '..'), destPath)}`);
|
||||
copiedCount++;
|
||||
}
|
||||
|
||||
console.log(`Успешно скопировано файлов: ${copiedCount}`);
|
||||
Reference in New Issue
Block a user