UNPKG

@vis.gl/dev-tools

Version:

Dev tools for vis.gl frameworks

77 lines 2.65 kB
/** This script gets the NPM dist tag for a given version * * Assume the current latest version is 6.1.5 * 6.1.6 - latest * 6.0.7 - v6.0-latest * 5.3.9 - v5.3-latest * 6.2.0-alpha.1 - beta * 6.0.8-alpha.1 - v6.0-beta * 5.4.0-alpha.1 - v5.4-beta */ import { execSync } from 'child_process'; import fs from 'fs'; import { join } from 'path'; import semver from 'semver'; const { name, version } = getPackageInfo(); const tag = resolveTag(); if (tag) { console.log(tag); } else { process.exit(1); } function resolveTag() { let track = version.includes('-') ? 'beta' : 'latest'; let latestVersion = getPublishedVersion(name, track); if (!latestVersion || semver.gte(version, latestVersion)) { // Note we allow the equal case here in case only some packages failed to publish return track; } const major = semver.major(version); const minor = semver.minor(version); if (semver.major(latestVersion) === major && semver.minor(latestVersion) === minor) { // Within the current minor release, patch should only increment console.error(`INVALID VERSION ${version}, ${latestVersion} already exists`); return null; } track = `v${major}.${minor}-${track}`; latestVersion = getPublishedVersion(name, track); if (!latestVersion || semver.gte(version, latestVersion)) { // Note we allow the equal case here in case only some packages failed to publish return track; } // For a previous minor release, patch should only increment console.error(`INVALID VERSION ${version}, ${latestVersion} already exists`); return null; } function getPackageInfo() { let packageJsonFile = './package.json'; if (fs.existsSync('./modules/core')) { // if the monorepo has a "core" package, use it packageJsonFile = './modules/core/package.json'; } else if (fs.existsSync('./modules')) { // otherwise, take the first package of the monorepo for (const item of fs.readdirSync('./modules')) { const path = join('./modules', item, 'package.json'); if (fs.existsSync(path)) { packageJsonFile = path; break; } } } return JSON.parse(fs.readFileSync(packageJsonFile, 'utf8')); } function getPublishedVersion(packageName, distTag) { try { return execSync(`npm show ${packageName}@${distTag} version`, { stdio: [null, 'pipe', null], encoding: 'utf-8' }).trim(); } catch (err) { // not found return null; } } //# sourceMappingURL=get-npm-dist-tag.js.map