perf: preserve Docker npm cache - version bumps only touch version.txt, not package.json
continuous-integration/webhook Deploy concluído (VPS4)
continuous-integration/webhook Deploy concluído (VPS4)
This commit is contained in:
@@ -500,8 +500,13 @@ app.get('/login', (req, res) => {
|
||||
// Função utilitária de Cache Buster
|
||||
async function serveHtmlWithCacheBuster(res, filePath) {
|
||||
try {
|
||||
const pkg = require('./package.json');
|
||||
const APP_VERSION = pkg.version || Date.now();
|
||||
// Lê version.txt (não package.json) para não ter cache-miss no Docker a cada deploy
|
||||
let APP_VERSION;
|
||||
try {
|
||||
APP_VERSION = (await fs.readFile(path.join(__dirname, 'version.txt'), 'utf8')).trim();
|
||||
} catch (_) {
|
||||
APP_VERSION = require('./package.json').version || Date.now();
|
||||
}
|
||||
let content = await fs.readFile(filePath, 'utf8');
|
||||
|
||||
// Injeta versão em tags de script e css
|
||||
|
||||
+2
-1
@@ -58,8 +58,9 @@ ssh -o BatchMode=yes -o StrictHostKeyChecking=no "${PROD_USER}@${PROD_VPS}" "
|
||||
"
|
||||
|
||||
# 5. Commit do bump de versão de volta ao Gitea (listener ignora → sem loop)
|
||||
# package.json não é incluído propositalmente: preserva o cache de npm install no Docker
|
||||
log "💾 git commit + push do bump de versão..."
|
||||
git add dental-server/version.txt dental-server/package.json dental-server/public/index.html
|
||||
git add dental-server/version.txt dental-server/public/index.html
|
||||
git commit -m "chore(deploy): bump version" || true
|
||||
git push origin main || true
|
||||
|
||||
|
||||
+5
-10
@@ -5,24 +5,19 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
const versionFile = path.join(__dirname, 'dental-server', 'version.txt');
|
||||
const packageFile = path.join(__dirname, 'dental-server', 'package.json');
|
||||
const indexFile = path.join(__dirname, 'dental-server', 'public', 'index.html');
|
||||
const versionFile = path.join(__dirname, 'dental-server', 'version.txt');
|
||||
const indexFile = path.join(__dirname, 'dental-server', 'public', 'index.html');
|
||||
|
||||
const current = fs.readFileSync(versionFile, 'utf8').trim();
|
||||
const parts = current.split('.').map(Number);
|
||||
parts[2]++; // bump PATCH
|
||||
const next = parts.join('.');
|
||||
|
||||
// version.txt
|
||||
// version.txt — fonte de verdade do número de versão
|
||||
fs.writeFileSync(versionFile, next + '\n');
|
||||
|
||||
// package.json
|
||||
const pkg = JSON.parse(fs.readFileSync(packageFile, 'utf8'));
|
||||
pkg.version = next;
|
||||
fs.writeFileSync(packageFile, JSON.stringify(pkg, null, 2) + '\n');
|
||||
|
||||
// index.html — substitui qualquer v{X.Y.Z} dentro do <span> da sidebar
|
||||
// index.html — substitui v{X.Y.Z} dentro do <span> da sidebar
|
||||
// (package.json NÃO é alterado para preservar o cache de npm install no Docker)
|
||||
let html = fs.readFileSync(indexFile, 'utf8');
|
||||
html = html.replace(
|
||||
/(RF Dental.*?<span[^>]*>)\s*v[\d.]+\s*(<\/span>)/s,
|
||||
|
||||
Reference in New Issue
Block a user