Spaces:
Running
Running
const fs = require('fs'); | |
const path = require('path'); | |
// Mixin replacements | |
const mixinReplacements = { | |
'@include overflow-overlay();': 'overflow: auto;\n overflow: overlay;', | |
'@include absolute-0();': 'position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;', | |
'@include ellipsis-oneline();': 'overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;', | |
'@include flex-grid-layout();': 'display: flex;\n flex-wrap: wrap;\n align-content: flex-start;', | |
'@include flex-grid-layout-children(2, 48%);': 'width: 48%;\n margin-bottom: calc(#{100 - 2 * 48%} / #{2 - 1});\n\n &:not(:nth-child(2n)) {\n margin-right: calc(#{100 - 2 * 48%} / #{2 - 1});\n }', | |
'@include flex-grid-layout-children(3, 31%);': 'width: 31%;\n margin-bottom: calc(#{100 - 3 * 31%} / #{3 - 1});\n\n &:not(:nth-child(3n)) {\n margin-right: calc(#{100 - 3 * 31%} / #{3 - 1});\n }', | |
'@include flex-grid-layout-children(4, 24%);': 'width: 24%;\n margin-bottom: calc(#{100 - 4 * 24%} / #{4 - 1});\n\n &:not(:nth-child(4n)) {\n margin-right: calc(#{100 - 4 * 24%} / #{4 - 1});\n }', | |
'@include flex-grid-layout-children(5, 18%);': 'width: 18%;\n margin-bottom: calc(#{100 - 5 * 18%} / #{5 - 1});\n\n &:not(:nth-child(5n)) {\n margin-right: calc(#{100 - 5 * 18%} / #{5 - 1});\n }', | |
'@include flex-grid-layout-children(5, 16%);': 'width: 16%;\n margin-bottom: calc(#{100 - 5 * 16%} / #{5 - 1});\n\n &:not(:nth-child(5n)) {\n margin-right: calc(#{100 - 5 * 16%} / #{5 - 1});\n }', | |
'@include flex-grid-layout-children(5, 19%);': 'width: 19%;\n margin-bottom: calc(#{100 - 5 * 19%} / #{5 - 1});\n\n &:not(:nth-child(5n)) {\n margin-right: calc(#{100 - 5 * 19%} / #{5 - 1});\n }', | |
'@include flex-grid-layout-children(6, 14%);': 'width: 14%;\n margin-bottom: calc(#{100 - 6 * 14%} / #{6 - 1});\n\n &:not(:nth-child(6n)) {\n margin-right: calc(#{100 - 6 * 14%} / #{6 - 1});\n }', | |
'@include flex-grid-layout-children(8, 12%);': 'width: 12%;\n margin-bottom: calc(#{100 - 8 * 12%} / #{8 - 1});\n\n &:not(:nth-child(8n)) {\n margin-right: calc(#{100 - 8 * 12%} / #{8 - 1});\n }', | |
'@include flex-grid-layout-children(10, 8%);': 'width: 8%;\n margin-bottom: calc(#{100 - 10 * 8%} / #{10 - 1});\n\n &:not(:nth-child(10n)) {\n margin-right: calc(#{100 - 10 * 8%} / #{10 - 1});\n }', | |
'@include flex-grid-layout-children(10, 9%);': 'width: 9%;\n margin-bottom: calc(#{100 - 10 * 9%} / #{10 - 1});\n\n &:not(:nth-child(10n)) {\n margin-right: calc(#{100 - 10 * 9%} / #{10 - 1});\n }', | |
'@include flex-grid-layout-children(10, 7%);': 'width: 7%;\n margin-bottom: calc(#{100 - 10 * 7%} / #{10 - 1});\n\n &:not(:nth-child(10n)) {\n margin-right: calc(#{100 - 10 * 7%} / #{10 - 1});\n }' | |
}; | |
function processFile(filePath) { | |
try { | |
let content = fs.readFileSync(filePath, 'utf8'); | |
let modified = false; | |
for (const [mixin, replacement] of Object.entries(mixinReplacements)) { | |
if (content.includes(mixin)) { | |
content = content.replace(new RegExp(mixin.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g'), replacement); | |
modified = true; | |
} | |
} | |
if (modified) { | |
fs.writeFileSync(filePath, content, 'utf8'); | |
console.log(`Fixed mixins in: ${filePath}`); | |
} | |
} catch (error) { | |
console.error(`Error processing ${filePath}:`, error.message); | |
} | |
} | |
function walkDirectory(dir) { | |
const files = fs.readdirSync(dir); | |
for (const file of files) { | |
const filePath = path.join(dir, file); | |
const stat = fs.statSync(filePath); | |
if (stat.isDirectory()) { | |
walkDirectory(filePath); | |
} else if (file.endsWith('.vue') || file.endsWith('.scss')) { | |
processFile(filePath); | |
} | |
} | |
} | |
// Start processing from src directory | |
walkDirectory('./src'); | |
console.log('Mixin replacement completed!'); |