Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@
"test": "run -p lint test:unit test:types"
},
"dependencies": {
"@conventional-changelog/git-client": "^3.0.0",
"@conventional-changelog/git-client": "^3.0.1",
"@simple-libs/child-process-utils": "^2.0.0",
"@simple-libs/hosted-git-info": "^2.0.0",
"@simple-libs/stream-utils": "^2.0.0",
Expand Down
13 changes: 10 additions & 3 deletions packages/core/src/project/monorepo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,8 @@ export abstract class MonorepoProject extends Project {
private async getBumpOptions(
project: Project,
options: MonorepoProjectBumpOptions,
baseVersion?: string
baseVersion?: string,
firstRelease?: boolean
) {
const {
preset = bumpDefaultOptions.preset,
Expand All @@ -219,6 +220,7 @@ export abstract class MonorepoProject extends Project {
scope: [scope, ...extraScopes]
}
const projectBumpOptions = {
firstRelease,
...bumpOptions,
...byProject?.[name],
preset: projectPreset,
Expand Down Expand Up @@ -274,14 +276,19 @@ export abstract class MonorepoProject extends Project {
options: MonorepoProjectBumpOptions
}[] = []
const baseVersion = await this.manifest.getVersion()
const tagPrefix = await this.getTagPrefix('')
const firstRelease = !await this.gitClient.getLastSemverTag({
prefix: tagPrefix
})
let hasBump = false
let fixedVersion: string | undefined

for await (const project of this.getProjects()) {
const projectBumpOptions = await this.getBumpOptions(
project,
options,
baseVersion
baseVersion,
firstRelease
)
const version = await project.getNextVersion(projectBumpOptions)

Expand All @@ -302,7 +309,7 @@ export abstract class MonorepoProject extends Project {
...options,
forcePrivate: true,
version: fixedVersion,
tagPrefix: await this.getTagPrefix('')
tagPrefix
})

for (const { project, options } of updatedProjects) {
Expand Down
58 changes: 29 additions & 29 deletions packages/core/src/project/packageJson.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,29 +15,29 @@ describe('core', () => {
describe('manifest', () => {
describe('PackageJsonProject', () => {
it('should get no tags', async () => {
const path = await packageJsonProject()
const { cwd } = await packageJsonProject()
const project = new PackageJsonProject({
path: join(path, 'package.json')
path: join(cwd, 'package.json')
})

expect(await project.getTags()).toEqual([])
})

it('should get tags', async () => {
const path = await packageJsonProject({
const { cwd } = await packageJsonProject({
version: '3.0.0'
})
const project = new PackageJsonProject({
path: join(path, 'package.json')
path: join(cwd, 'package.json')
})

expect(await project.getTags()).toEqual(['v3.0.0'])
})

it('should get release data', async () => {
const path = await packageJsonProject()
const { cwd } = await packageJsonProject()
const project = new PackageJsonProject({
path: join(path, 'package.json')
path: join(cwd, 'package.json')
})
const release = await project.getReleaseData()

Expand All @@ -54,43 +54,43 @@ describe('core', () => {
})

it('should not get release data', async () => {
const path = await packageJsonProject({
const { cwd } = await packageJsonProject({
version: '3.0.0'
})
const project = new PackageJsonProject({
path: join(path, 'package.json')
path: join(cwd, 'package.json')
})
const release = await project.getReleaseData()

expect(release).toEqual([])
})

it('should get next version', async () => {
const path = await packageJsonProject()
const { cwd } = await packageJsonProject()
const project = new PackageJsonProject({
path: join(path, 'package.json')
path: join(cwd, 'package.json')
})
const version = await project.getNextVersion()

expect(version).toBe('2.1.0')
})

it('should not get next version for private package', async () => {
const path = await packageJsonProject({
const { cwd } = await packageJsonProject({
private: true
})
const project = new PackageJsonProject({
path: join(path, 'package.json')
path: join(cwd, 'package.json')
})
const version = await project.getNextVersion()

expect(version).toBe(null)
})

it('should get next version from options', async () => {
const path = await packageJsonProject()
const { cwd } = await packageJsonProject()
const project = new PackageJsonProject({
path: join(path, 'package.json')
path: join(cwd, 'package.json')
})
const version = await project.getNextVersion({
version: '3.0.0'
Expand All @@ -100,9 +100,9 @@ describe('core', () => {
})

it('should get next version from manifest because of first release', async () => {
const path = await packageJsonProject()
const { cwd } = await packageJsonProject()
const project = new PackageJsonProject({
path: join(path, 'package.json')
path: join(cwd, 'package.json')
})
const version = await project.getNextVersion({
firstRelease: true
Expand All @@ -112,9 +112,9 @@ describe('core', () => {
})

it('should get next version with given release type', async () => {
const path = await packageJsonProject()
const { cwd } = await packageJsonProject()
const project = new PackageJsonProject({
path: join(path, 'package.json')
path: join(cwd, 'package.json')
})
const version = await project.getNextVersion({
as: 'major'
Expand All @@ -124,9 +124,9 @@ describe('core', () => {
})

it('should get next prerelease version', async () => {
const path = await packageJsonProject()
const { cwd } = await packageJsonProject()
const project = new PackageJsonProject({
path: join(path, 'package.json')
path: join(cwd, 'package.json')
})
const version = await project.getNextVersion({
prerelease: 'alpha'
Expand All @@ -136,9 +136,9 @@ describe('core', () => {
})

it('should dry bump version', async () => {
const path = await packageJsonProject()
const { cwd } = await packageJsonProject()
const project = new PackageJsonProject({
path: join(path, 'package.json')
path: join(cwd, 'package.json')
})
const result = await project.bump({
dryRun: true
Expand All @@ -155,13 +155,13 @@ describe('core', () => {
}
])

expect(await fs.readFile(join(path, 'package.json'), 'utf8')).toContain('"version":"2.0.0"')
expect(await fs.readFile(join(cwd, 'package.json'), 'utf8')).toContain('"version":"2.0.0"')
})

it('should bump version', async () => {
const path = await forkProject('bump', packageJsonProject())
const { cwd } = await forkProject('bump', packageJsonProject())
const project = new PackageJsonProject({
path: join(path, 'package.json')
path: join(cwd, 'package.json')
})
const result = await project.bump()

Expand All @@ -176,14 +176,14 @@ describe('core', () => {
}
])

expect(await fs.readFile(join(path, 'package.json'), 'utf8')).toMatch(/"version":"2\.(0\.1|1\.0)"/)
expect(await fs.readFile(join(path, 'CHANGELOG.md'), 'utf8')).toMatch(/## \[2\.(0\.1|1\.0)\]/)
expect(await fs.readFile(join(cwd, 'package.json'), 'utf8')).toMatch(/"version":"2\.(0\.1|1\.0)"/)
expect(await fs.readFile(join(cwd, 'CHANGELOG.md'), 'utf8')).toMatch(/## \[2\.(0\.1|1\.0)\]/)
})

it('should get commit message after bump', async () => {
const path = await packageJsonProject()
const { cwd } = await packageJsonProject()
const project = new PackageJsonProject({
path: join(path, 'package.json')
path: join(cwd, 'package.json')
})

await project.bump({
Expand Down
Loading