diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 474cf1c..811ce39 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -65,21 +65,18 @@ export namespace PackageJson { export type Exports = string | { [key: string]: Exports } } -// @ts-ignore export interface Events extends cordis.Events {} -// @ts-ignore export interface Context { - [Context.events]: Events + [Context.events]: Events yakumo: Yakumo register(name: string, callback: () => void, options?: Options): void } -// @ts-ignore -export class Context extends cordis.Context { +export class Context extends cordis.Context { constructor(config: any) { super(config) - this.plugin(Yakumo) + this.plugin(Yakumo, config) } } diff --git a/packages/core/src/plugins/publish.ts b/packages/core/src/plugins/publish.ts index d279c4b..54728d2 100644 --- a/packages/core/src/plugins/publish.ts +++ b/packages/core/src/plugins/publish.ts @@ -22,7 +22,7 @@ function getVersion(name: string, isNext = false) { if (isNext) { return latest(name, { version: 'next' }).catch(() => getVersion(name)) } else { - return latest(name).catch(() => '0.0.1') + return latest(name, { version: 'latest' }).catch(() => '0.0.1') } } diff --git a/packages/core/src/plugins/upgrade.ts b/packages/core/src/plugins/upgrade.ts index 1632c52..a67d7e0 100644 --- a/packages/core/src/plugins/upgrade.ts +++ b/packages/core/src/plugins/upgrade.ts @@ -41,7 +41,7 @@ export default function apply(ctx: Context, config: Config = {}) { const oldVersion = oldRange.slice(1) const [newVersion, lastestVersion] = await Promise.all([ latest(dep, { version: oldRange }), - latest(dep), + latest(dep, { version: ctx.yakumo.argv.next ? '' : 'latest' }), ]) updateProgress() try { @@ -89,5 +89,7 @@ export default function apply(ctx: Context, config: Config = {}) { } } } + }, { + boolean: ['next'], }) } diff --git a/packages/core/src/plugins/version.ts b/packages/core/src/plugins/version.ts index f455292..98833ba 100644 --- a/packages/core/src/plugins/version.ts +++ b/packages/core/src/plugins/version.ts @@ -4,7 +4,7 @@ import { gt, SemVer } from 'semver' import kleur from 'kleur' import Yakumo, { confirm, Context, cwd, PackageJson } from '../index.js' -const bumpTypes = ['major', 'minor', 'patch', 'prerelease', 'version', 'reset'] as const +const bumpTypes = ['major', 'minor', 'patch', 'version', 'reset'] as const type BumpType = typeof bumpTypes[number] class Package { @@ -18,11 +18,27 @@ class Package { this.version = this.meta.version } - bump(flag: BumpType, options: any) { + bump(flag: BumpType, options: any, prerelease: boolean) { if (this.meta.private) return let version = new SemVer(this.meta.version) const reset = flag === 'reset' - if (!flag || reset) { + if (prerelease) { + if (version.prerelease.length) { + version.prerelease = [{ + alpha: 'beta', + beta: 'rc', + }[version.prerelease[0]]!, 0] + } else { + flag ??= 'major' + if (flag === 'major') { + version = new SemVer(`${version.major + 1}.0.0-alpha.0`) + } else if (flag === 'minor') { + version = new SemVer(`${version.major}.${version.minor + 1}.0-alpha.0`) + } else if (flag === 'patch') { + version = new SemVer(`${version.major}.${version.minor}.${version.patch + 1}-alpha.0`) + } + } + } else if (!flag || reset) { if (version.prerelease.length) { const prerelease = version.prerelease.slice() as [string, number] prerelease[1] += reset ? -1 : 1 @@ -38,15 +54,6 @@ class Package { this.dirty = true this.version = options.version return options.version - } else if (flag === 'prerelease') { - if (version.prerelease.length) { - version.prerelease = [{ - alpha: 'beta', - beta: 'rc', - }[version.prerelease[0]]!, 0] - } else { - version = new SemVer(`${version.major + 1}.0.0-alpha.0`) - } } else { if (version.prerelease.length) { version.prerelease = [] @@ -88,8 +95,8 @@ class Graph { return results } - bump(node: Package, flag: BumpType) { - const version = node.bump(flag, this.project.argv) + bump(node: Package, flag: BumpType, isPre: boolean) { + const version = node.bump(flag, this.project.argv, isPre) if (!version) return const dependents = new Set() this.each((target) => { @@ -121,7 +128,7 @@ class Graph { } }) if (!this.project.argv.recursive) return - dependents.forEach(dep => this.bump(dep, flag)) + dependents.forEach(dep => this.bump(dep, flag, isPre)) } async save() { @@ -158,7 +165,7 @@ export default function apply(ctx: Context) { const graph = new Graph(ctx.yakumo) const paths = ctx.yakumo.locate(ctx.yakumo.argv._) for (const path of paths) { - graph.bump(graph.nodes[path], flag) + graph.bump(graph.nodes[path], flag, ctx.yakumo.argv.prerelease) } await graph.save()