78 lines
2.9 KiB
JavaScript
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`); |