- Created vite.standalone.config.js for optimized bundle building - Added build scripts for standalone bundle generation - Generated three formats: IIFE (28KB), UMD (28KB), ES Module (61KB) - Includes all dependencies: qrcode and imagetracer - Added comprehensive documentation and examples - Created build script with detailed bundle information - Added terser for minification optimization - Fixed package.json dependencies and scripts
56 lines
2.1 KiB
JavaScript
56 lines
2.1 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
import { execSync } from 'child_process';
|
|
import { readFileSync, writeFileSync } from 'fs';
|
|
import { resolve } from 'path';
|
|
|
|
console.log('🚀 Building standalone QR Code Utils bundle...\n');
|
|
|
|
try {
|
|
// Build the standalone bundle
|
|
console.log('📦 Building with Vite...');
|
|
execSync('npm run build:standalone', { stdio: 'inherit' });
|
|
|
|
// Get bundle info
|
|
const bundlePath = resolve('./dist/qr-code-utils.iife.js');
|
|
const bundleStats = readFileSync(bundlePath, 'utf8');
|
|
const bundleSize = (bundleStats.length / 1024).toFixed(2);
|
|
|
|
console.log('\n✅ Standalone bundle created successfully!');
|
|
console.log(`📁 Location: dist/qr-code-utils.iife.js`);
|
|
console.log(`📏 Size: ${bundleSize} KB`);
|
|
|
|
// Create bundle info file
|
|
const bundleInfo = {
|
|
name: 'qr-code-utils',
|
|
version: '1.0.0',
|
|
description: 'Standalone QR Code Generator with Image Support',
|
|
formats: ['ES Module', 'UMD', 'IIFE'],
|
|
dependencies: ['qrcode', 'imagetracer'],
|
|
size: `${bundleSize} KB`,
|
|
usage: {
|
|
browser: '<script src="qr-code-utils.iife.js"></script>',
|
|
esm: 'import { generateQRCode } from "qr-code-utils.es.js"',
|
|
umd: 'const { generateQRCode } = require("qr-code-utils.umd.js")'
|
|
}
|
|
};
|
|
|
|
writeFileSync('./dist/bundle-info.json', JSON.stringify(bundleInfo, null, 2));
|
|
|
|
console.log('\n📋 Bundle Information:');
|
|
console.log(' • Includes all dependencies (qrcode, imagetracer)');
|
|
console.log(' • No external dependencies required');
|
|
console.log(' • Works in browsers, Node.js, and bundlers');
|
|
console.log(' • Optimized and minified for production');
|
|
|
|
console.log('\n🎯 Usage Examples:');
|
|
console.log(' Browser: <script src="qr-code-utils.iife.js"></script>');
|
|
console.log(' ESM: import { generateQRCode } from "qr-code-utils.es.js"');
|
|
console.log(' UMD: const { generateQRCode } = require("qr-code-utils.umd.js")');
|
|
|
|
console.log('\n📖 See examples/standalone-bundle-example.html for a complete example');
|
|
|
|
} catch (error) {
|
|
console.error('❌ Build failed:', error.message);
|
|
process.exit(1);
|
|
}
|