Files
Vendaweb-api/scripts/rewrite-dist-src-aliases.js
Luis Eduardo Estevao a63ca5e598
All checks were successful
Build (develop) / Promote (main) / build-and-push-deploy (push) Successful in 3m33s
feat: implement sales order services, redis-based concurrency control, and build-time path alias resolution for production.
2026-05-17 21:00:31 -03:00

41 lines
1.1 KiB
JavaScript

const fs = require('fs');
const path = require('path');
const distDir = path.resolve(__dirname, '..', 'dist');
function walk(dir) {
if (!fs.existsSync(dir)) {
return [];
}
return fs.readdirSync(dir, { withFileTypes: true }).flatMap((entry) => {
const fullPath = path.join(dir, entry.name);
if (entry.isDirectory()) {
return walk(fullPath);
}
return fullPath.endsWith('.js') ? [fullPath] : [];
});
}
function toRequirePath(fromFile, srcImport) {
const target = path.join(distDir, srcImport.replace(/^src[\\/]/, ''));
let relative = path.relative(path.dirname(fromFile), target).replace(/\\/g, '/');
if (!relative.startsWith('.')) {
relative = `./${relative}`;
}
return relative;
}
for (const file of walk(distDir)) {
const source = fs.readFileSync(file, 'utf8');
const rewritten = source.replace(/require\((['"])src\/([^'"]+)\1\)/g, (_match, quote, importPath) => {
return `require(${quote}${toRequirePath(file, `src/${importPath}`)}${quote})`;
});
if (rewritten !== source) {
fs.writeFileSync(file, rewritten);
}
}