All checks were successful
Build (develop) / Promote (main) / build-and-push-deploy (push) Successful in 3m33s
41 lines
1.1 KiB
JavaScript
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);
|
|
}
|
|
}
|