const minify = require('@node-minify/core'); const csso = require('@node-minify/csso'); const terser = require('@node-minify/terser'); const path = require('path'); const fs = require('fs'); // Specify the order JS and CSS files in arrays const jsFiles = [ 'node_modules/video.js/dist/video.min.js', 'node_modules/videojs-errors/dist/videojs-errors.min.js', 'node_modules/videojs-hotkeys/videojs.hotkeys.min.js', 'node_modules/videojs-contrib-ads/dist/videojs-contrib-ads.min.js', 'node_modules/@viostream/videojs-overlay/dist/videojs-overlay.min.js', 'src/module/share/share.js', 'src/module/watermark/watermark.js', 'node_modules/videojs-vr/dist/videojs-vr.min.js', 'node_modules/videojs-youtube/dist/Youtube.min.js', 'src/module/ads/ad.js', 'src/player.js' ]; const cssFiles = [ 'node_modules/video.js/dist/video-js.min.css', 'node_modules/videojs-errors/dist/videojs-errors.css', 'node_modules/videojs-contrib-ads/dist/videojs-contrib-ads.css', 'node_modules/@viostream/videojs-overlay/dist/videojs-overlay.css', 'src/module/share/share.css', 'src/module/watermark/watermark.css', 'node_modules/videojs-vr/dist/videojs-vr.css' ]; // Function to concatenate files and minify the combined file const concatenateAndMinify = (files, minifier, outputFile) => { const fileType = path.extname(files[0]).slice(1); // Get the file type dynamically (js or css) const combinedFilePath = path.join(__dirname, 'bundle', `combined.${fileType}`); // Concatenate content of each file and write to combined file let combinedContent = ''; files.forEach(file => { const content = fs.readFileSync(path.join(__dirname, file), 'utf-8'); combinedContent += content + '\n'; // Add file content with newline }); // Write the concatenated content to the combined file fs.writeFileSync(combinedFilePath, combinedContent, 'utf-8'); console.log(`Combined ${fileType} file created: ${combinedFilePath}`); // Now minify the combined file minify({ compressor: minifier, input: combinedFilePath, output: path.join(__dirname, 'bundle', outputFile), callback: (err, min) => { if (err) { console.error(`Error minifying ${outputFile}:`, err); } else { console.log(`${outputFile} minified successfully!`); // Optionally delete the combined file after minification fs.unlinkSync(combinedFilePath); } } }); }; // Ensure the bundle directory exists const bundleDir = path.join(__dirname, 'bundle'); if (!fs.existsSync(bundleDir)) { fs.mkdirSync(bundleDir); } // Bundle file anme base var bundleFileName = 'vjs-player-bundle'; // Concatenate and minify JS files into one file concatenateAndMinify(jsFiles, terser, `${bundleFileName}.min.js`); // Concatenate and minify CSS files into one file concatenateAndMinify(cssFiles, csso, `${bundleFileName}.min.css`);