From 3df4b052e5822fe75732363d975feebd18be8f3c Mon Sep 17 00:00:00 2001 From: Francois Daoust Date: Thu, 26 Jun 2025 10:14:02 +0200 Subject: [PATCH] Include pre-release versions to compute package diff Via https://github.com/w3c/webref/pull/1593#issuecomment-3004007088 The `npm install` command ignores pre-release versions. The only way to have it to install a pre-release version is to specify the version. To take pre-release versions into account when computing the diff with the latest published version, the code now first retrieves available versions through `npm view`. --- tools/prepare-release.js | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/tools/prepare-release.js b/tools/prepare-release.js index 80ba6f2dca8b..40a3f17b328e 100644 --- a/tools/prepare-release.js +++ b/tools/prepare-release.js @@ -67,14 +67,33 @@ async function computeDiff(type) { const majorVersion = majorVersionMatch ? '@' + majorVersionMatch[1] : ''; // Install @webref package in tmp folder + // If package is pinned to a major version, we'll use that one. + // If not, what we want is to install the latest version of the package, + // where "latest" includes pre-releases. The `npm install` command skips + // pre-releases, so we need to retrieve the latest published version first + // through a call to `npm view`. const tmpFolder = fs.mkdtempSync(path.join(os.tmpdir(), "webref-")); + let versionToInstall = null; + if (majorVersion) { + versionToInstall = majorVersion; + } + else { + try { + const versionsStr = execSync(`npm view --json @webref/${packageName} versions`); + const versions = JSON.parse(versionsStr); + versionToInstall = versions.pop(); + } + catch (err) { + throw new MissingPackageError(`No version found for package @webref/${packageName}.`); + } + } try { - execSync(`npm install @webref/${packageName}${majorVersion}`, { + execSync(`npm install @webref/${packageName}${versionToInstall}`, { cwd: tmpFolder }); } catch (err) { - throw new MissingPackageError(`Package @webref/${packageName}${majorVersion} does not exist or could not be installed.`); + throw new MissingPackageError(`Package @webref/${packageName}${versionToInstall} does not exist or could not be installed.`); } // Extract released version (will be used in the body of the pre-release PR)