lightswind
Version:
A collection of beautifully crafted React Components, Blocks & Templates for Modern Developers. Create stunning web applications effortlessly by using our 160+ professional and animated react components.
47 lines • 2.23 kB
JavaScript
;
const fs = require('fs');
const path = require('path');
const uiDir = path.join(__dirname, 'dist/components/ui');
const files = fs.readdirSync(uiDir).filter(f => f.endsWith('.tsx') || f.endsWith('.ts'));
let stats = { changed: 0, skipped: 0, files: [] };
files.forEach(file => {
const fp = path.join(uiDir, file);
let content = fs.readFileSync(fp, 'utf8');
const original = content;
// Normalize ../../lib/utils → @/lib/utils
content = content.replace(/from\s+["']\.\.\/\.\.\/lib\/utils["']/g, 'from "@/lib/utils"');
// Normalize ../../lib/hooks → @/lib/hooks
content = content.replace(/from\s+["']\.\.\/\.\.\/lib\/hooks["']/g, 'from "@/lib/hooks"');
// Normalize ../lib/utils (single level) → @/lib/utils
content = content.replace(/from\s+["']\.\.\/lib\/utils["']/g, 'from "@/lib/utils"');
// Normalize ../lib/hooks (single level) → @/lib/hooks
content = content.replace(/from\s+["']\.\.\/lib\/hooks["']/g, 'from "@/lib/hooks"');
// Normalize cross-component relative imports: from "./<comp>" that refer to other
// lightswind components → @/components/lightswind/<comp>
// NOTE: We only rewrite from "./<name>" if the target file exists in the ui dir
const relativeImportRegex = /from\s+["']\.\/([\w-]+)["']/g;
content = content.replace(relativeImportRegex, (match, compName) => {
const targetFile = path.join(uiDir, `${compName}.tsx`);
const targetFileTs = path.join(uiDir, `${compName}.ts`);
if (fs.existsSync(targetFile) || fs.existsSync(targetFileTs)) {
return `from "@/components/lightswind/${compName}"`;
}
return match; // leave non-component relative imports alone
});
if (content !== original) {
fs.writeFileSync(fp, content, 'utf8');
stats.changed++;
stats.files.push(file);
}
else {
stats.skipped++;
}
});
console.log(`\n✅ Done!`);
console.log(`Changed: ${stats.changed} files`);
console.log(`Skipped: ${stats.skipped} files (no changes needed)`);
if (stats.files.length > 0) {
console.log(`\nChanged files:`);
stats.files.forEach(f => console.log(` • ${f}`));
}
//# sourceMappingURL=normalize-imports.js.map