Files
vjs-player/bundle.js
2026-03-27 23:21:31 -07:00

78 lines
2.9 KiB
JavaScript

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`);