Calendar/build.js
Janus C. H. Knudsen b3f47e93e8 New renders+css
2025-12-06 01:22:04 +01:00

70 lines
1.9 KiB
JavaScript

import * as esbuild from 'esbuild';
import { readdir, rename } from 'fs/promises';
import { join, dirname, basename, extname } from 'path';
import { NovadiUnplugin } from '@novadi/core/unplugin';
// Convert PascalCase to kebab-case
function toKebabCase(str) {
return str.replace(/([A-Z])/g, '-$1').toLowerCase().replace(/^-/, '');
}
// Recursively rename files to kebab-case
async function renameFiles(dir) {
const entries = await readdir(dir, { withFileTypes: true });
for (const entry of entries) {
const fullPath = join(dir, entry.name);
if (entry.isDirectory()) {
await renameFiles(fullPath);
} else if (entry.isFile() && extname(entry.name) === '.js') {
const baseName = basename(entry.name, '.js');
const kebabName = toKebabCase(baseName);
if (baseName !== kebabName) {
const newPath = join(dirname(fullPath), kebabName + '.js');
await rename(fullPath, newPath);
}
}
}
}
// Build with esbuild
async function build() {
try {
// Main calendar bundle (with DI)
await esbuild.build({
entryPoints: ['src/index.ts'],
bundle: true,
outfile: 'wwwroot/js/calendar.js',
format: 'esm',
sourcemap: 'inline',
target: 'es2020',
minify: false,
keepNames: true,
platform: 'browser',
plugins: [NovadiUnplugin.esbuild({ debug: false, enableAutowiring: true, performanceLogging: true })]
});
// V2 standalone bundle (no DI, no dependencies on main calendar)
await esbuild.build({
entryPoints: ['src/v2/entry.ts'],
bundle: true,
outfile: 'wwwroot/js/calendar-v2.js',
format: 'esm',
sourcemap: 'inline',
target: 'es2020',
minify: false,
keepNames: true,
platform: 'browser'
});
console.log('V2 bundle created: wwwroot/js/calendar-v2.js');
} catch (error) {
console.error('Build failed:', error);
process.exit(1);
}
}
build();