const fs = require('fs');
const path = require('path');
const ROOT = path.resolve(__dirname, '..');
const SRC_DIR = path.join(ROOT, 'src');
function walk(dir, out = []) {
const entries = fs.readdirSync(dir, { withFileTypes: true });
for (const e of entries) {
const p = path.join(dir, e.name);
if (e.isDirectory()) walk(p, out);
else if (p.endsWith('.scss')) out.push(p);
}
return out;
}
function migrateContent(content) {
return content.replace(
/^\s*@import\s+(['"])([^'"]+)\1\s*;\s*$/gm,
(line, quote, rawPath) => {
const p = rawPath.trim();
if (
p.startsWith('url(') ||
p.startsWith('http://') ||
p.startsWith('https://')
)
return line;
if (p.endsWith('.css')) return line;
const normalized = p.startsWith('~') ? p.slice(1) : p;
return `@use ${quote}${normalized}${quote} as *;`;
},
);
}
function main() {
const files = walk(SRC_DIR);
let changed = 0;
for (const file of files) {
const before = fs.readFileSync(file, 'utf8');
const after = migrateContent(before);
if (after !== before) {
fs.writeFileSync(file, after);
changed += 1;
}
}
console.log(`migrate-scss-imports: changed ${changed} file(s)`);
}
main();