From 8e2eec40e58a2c962e318a5ebe65e607158cd156 Mon Sep 17 00:00:00 2001 From: Olivier Date: Wed, 23 Sep 2026 17:38:00 +0200 Subject: [PATCH] fix(build): trigger package release on main when beta versions need finalization --- bin/publish_all.js | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/bin/publish_all.js b/bin/publish_all.js index fa187403..f8fe186b 100644 --- a/bin/publish_all.js +++ b/bin/publish_all.js @@ -76,6 +76,13 @@ async function publishAll() { const previousDataMap = {}; let anyPackageChanged = false; + const forceBuild = process.argv.includes('--force'); + const tagArgIndex = process.argv.indexOf('--tag'); + const isBeta = process.argv.includes('--beta') || (tagArgIndex !== -1 && process.argv[tagArgIndex + 1] === 'beta'); + const defaultTag = isBeta ? 'beta' : 'latest'; + const npmTag = tagArgIndex !== -1 ? process.argv[tagArgIndex + 1] : defaultTag; + const tagString = npmTag ? `--tag ${npmTag}` : ''; + console.log('[PREPARE] Computing stable hashes prior to build...'); for (const pkg of packages) { const pkgDir = getPkgDir(pkg); @@ -91,19 +98,13 @@ async function publishAll() { previousDataMap[pkgName] = registry[pkgName] || {}; const hasDist = fs.existsSync(path.join(pkgDir, 'dist')) || fs.existsSync(path.join(pkgDir, 'lib')); + const needsFinalize = !isBeta && pkgJson.version.includes('-beta'); - if (!hasDist || previousDataMap[pkgName].hash !== computedHashes[pkgName]) { + if (!hasDist || previousDataMap[pkgName].hash !== computedHashes[pkgName] || needsFinalize) { anyPackageChanged = true; } } - const forceBuild = process.argv.includes('--force'); - const tagArgIndex = process.argv.indexOf('--tag'); - const isBeta = process.argv.includes('--beta') || (tagArgIndex !== -1 && process.argv[tagArgIndex + 1] === 'beta'); - const defaultTag = isBeta ? 'beta' : 'latest'; - const npmTag = tagArgIndex !== -1 ? process.argv[tagArgIndex + 1] : defaultTag; - const tagString = npmTag ? `--tag ${npmTag}` : ''; - if (!anyPackageChanged && !forceBuild) { console.log('[BUILD] No package changes detected and build artifacts present. Skipping build phase completely.'); } else { @@ -138,8 +139,10 @@ async function publishAll() { const currBuf = Buffer.from(hash || ''); const isHashMatching = prevBuf.length === currBuf.length && crypto.timingSafeEqual(prevBuf, currBuf); - if (!isHashMatching) { - console.log(`[PUBLISH] Changes detected in ${pkgName}. Releasing...`); + const needsFinalize = !isBeta && pkgJson.version.includes('-beta'); + + if (!isHashMatching || needsFinalize) { + console.log(`[PUBLISH] Changes detected or beta finalization needed in ${pkgName}. Releasing...`); try { let newVersion;