#!/usr/bin/env node import fs from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); // Map of npm package names to vendor folder names and their dist paths const packages = { 'jquery': { folder: 'jquery', subdir: 'dist' }, 'jquery-ui': { folder: 'jquery-ui', subdir: 'dist' }, 'moment': { folder: 'moment', subdir: '.' }, 'daterangepicker': { folder: 'daterangepicker', subdir: '' }, 'wavesurfer.js': { folder: 'wavesurfer', subdir: 'dist' }, 'air-datepicker': { folder: 'air-datepicker', subdir: 'dist' }, }; const vendorDir = path.join(__dirname, '..', 'public', 'assets', 'vendor'); // Create vendor directory if it doesn't exist if (!fs.existsSync(vendorDir)) { fs.mkdirSync(vendorDir, { recursive: true }); } // Copy each package Object.entries(packages).forEach(([npmPkg, config]) => { const { folder, subdir } = config; const nodeModulesPkg = path.join(__dirname, '..', 'node_modules', npmPkg); const vendorPkg = path.join(vendorDir, folder); if (!fs.existsSync(nodeModulesPkg)) { console.warn(`Warning: ${npmPkg} not found in node_modules`); return; } // Remove existing vendor directory for this package if (fs.existsSync(vendorPkg)) { fs.rmSync(vendorPkg, { recursive: true }); } // Copy the appropriate files const source = subdir ? path.join(nodeModulesPkg, subdir) : nodeModulesPkg; if (!fs.existsSync(source)) { console.warn(`Warning: Source directory ${source} not found for ${npmPkg}`); return; } fs.cpSync(source, vendorPkg, { recursive: true }); console.log(`✓ Copied ${npmPkg} → ${folder}`); }); console.log(`✓ Vendor setup complete`);