feat: implement sales order services, redis-based concurrency control, and build-time path alias resolution for production.
All checks were successful
Build (develop) / Promote (main) / build-and-push-deploy (push) Successful in 3m33s
All checks were successful
Build (develop) / Promote (main) / build-and-push-deploy (push) Successful in 3m33s
This commit is contained in:
40
scripts/rewrite-dist-src-aliases.js
Normal file
40
scripts/rewrite-dist-src-aliases.js
Normal file
@@ -0,0 +1,40 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user