qrcodedemo/scripts/build-standalone.js
Michael Mainguy 874f3c4412 Add standalone bundle for qrCodeUtils with all dependencies
- 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
2025-08-01 17:17:36 -05:00

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