ci(scripts): misc improvements
This commit is contained in:
@@ -1,17 +1,18 @@
|
||||
import fse from 'fs-extra'
|
||||
import path from 'path'
|
||||
import globby from 'globby'
|
||||
import path, { dirname } from 'path'
|
||||
import { fileURLToPath } from 'url'
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url)
|
||||
const __dirname = path.dirname(__filename)
|
||||
|
||||
const packagesDir = path.resolve(__dirname, '../../packages')
|
||||
const projectRoot = path.resolve(__dirname, '../../')
|
||||
|
||||
export type PackageDetails = {
|
||||
/** Name in package.json / npm registry */
|
||||
name: string
|
||||
/** Full path to package */
|
||||
packagePath: string
|
||||
/** Full path to package relative to project root */
|
||||
packagePath: `packages/${string}`
|
||||
/** Short name is the directory name */
|
||||
shortName: string
|
||||
/** Version in package.json */
|
||||
@@ -19,20 +20,23 @@ export type PackageDetails = {
|
||||
}
|
||||
|
||||
export const getPackageDetails = async (packages: string[]): Promise<PackageDetails[]> => {
|
||||
const packageDirs = fse.readdirSync(packagesDir).filter((d) => packages.includes(d))
|
||||
const packageJsons = await globby('packages/*/package.json', {
|
||||
cwd: projectRoot,
|
||||
absolute: true,
|
||||
})
|
||||
|
||||
const packageDetails = await Promise.all(
|
||||
packageDirs.map(async (dirName) => {
|
||||
const packageJson = await fse.readJson(`${packagesDir}/${dirName}/package.json`)
|
||||
packageJsons.map(async (packageJsonPath) => {
|
||||
const packageJson = await fse.readJson(packageJsonPath)
|
||||
const isPublic = packageJson.private !== true
|
||||
if (!isPublic) return null
|
||||
|
||||
return {
|
||||
name: packageJson.name as string,
|
||||
packagePath: path.resolve(packagesDir, dirName),
|
||||
shortName: dirName,
|
||||
packagePath: path.relative(projectRoot, dirname(packageJsonPath)),
|
||||
shortName: path.dirname(packageJsonPath),
|
||||
version: packageJson.version,
|
||||
}
|
||||
} as PackageDetails
|
||||
}),
|
||||
)
|
||||
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
import chalk from 'chalk'
|
||||
import pLimit from 'p-limit'
|
||||
|
||||
import { getPackageDetails } from './getPackageDetails.js'
|
||||
|
||||
const npmRequestLimit = pLimit(40)
|
||||
|
||||
const packages = [
|
||||
'payload',
|
||||
'translations',
|
||||
@@ -37,15 +40,21 @@ const packages = [
|
||||
export const getPackageRegistryVersions = async (): Promise<void> => {
|
||||
const packageDetails = await getPackageDetails(packages)
|
||||
|
||||
await Promise.all(
|
||||
packageDetails.map(async (pkg) => {
|
||||
// Get published version from npm
|
||||
const json = await fetch(`https://registry.npmjs.org/${pkg.name}`).then((res) => res.json())
|
||||
const { latest = 'N/A', beta = 'N/A', alpha = 'N/A' } = json['dist-tags'] ?? {}
|
||||
const msg = `${chalk.bold(pkg.name.padEnd(32))} latest: ${latest?.padEnd(16)} beta: ${beta?.padEnd(16)} alpha: ${alpha}`
|
||||
console.log(msg)
|
||||
}),
|
||||
const results = await Promise.all(
|
||||
packageDetails.map(async (pkg) =>
|
||||
npmRequestLimit(async () => {
|
||||
// Get published version from npm
|
||||
const json = await fetch(`https://registry.npmjs.org/${pkg.name}`).then((res) => res.json())
|
||||
const { latest = 'N/A', beta = 'N/A', alpha = 'N/A' } = json['dist-tags'] ?? {}
|
||||
const msg = `${chalk.bold(pkg.name.padEnd(32))} latest: ${latest?.padEnd(
|
||||
16,
|
||||
)} beta: ${beta?.padEnd(16)} alpha: ${alpha}`
|
||||
return msg
|
||||
}),
|
||||
),
|
||||
)
|
||||
|
||||
console.log(results.join('\n'))
|
||||
}
|
||||
|
||||
if (import.meta.url === new URL(import.meta.url).href) {
|
||||
|
||||
@@ -17,7 +17,7 @@ import type { PackageDetails } from './lib/getPackageDetails.js'
|
||||
import { getPackageDetails } from './lib/getPackageDetails.js'
|
||||
import { updateChangelog } from './utils/updateChangelog.js'
|
||||
|
||||
const npmPublishLimit = pLimit(5)
|
||||
const npmPublishLimit = pLimit(10)
|
||||
|
||||
// Update this list with any packages to publish
|
||||
const packageWhitelist = [
|
||||
@@ -142,7 +142,9 @@ async function main() {
|
||||
console.log(chalk.bold.yellow(` Tag: ${tag}\n`))
|
||||
console.log(chalk.bold.green(` Changes (${packageDetails.length} packages):\n`))
|
||||
console.log(
|
||||
`${packageDetails.map((p) => ` - ${p.name.padEnd(32)} ${p.version} => ${chalk.green(nextReleaseVersion)}`).join('\n')}\n`,
|
||||
`${packageDetails
|
||||
.map((p) => ` - ${p.name.padEnd(32)} ${p.version} => ${chalk.green(nextReleaseVersion)}`)
|
||||
.join('\n')}\n`,
|
||||
)
|
||||
|
||||
const confirmPublish = await confirm('Are you sure you want to create these versions?')
|
||||
|
||||
Reference in New Issue
Block a user