mirror of
https://github.com/pnpm/pnpm.git
synced 2025-12-24 07:38:12 -05:00
fix: update cmd should work normal when set empty string version (#4243)
close #4196
This commit is contained in:
5
.changeset/famous-poets-perform.md
Normal file
5
.changeset/famous-poets-perform.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"pnpm": patch
|
||||
---
|
||||
|
||||
Update command should work when there is a dependency with emty version in `devDependencies` [#4196](https://github.com/pnpm/pnpm/issues/4196).
|
||||
5
.changeset/lemon-pears-invent.md
Normal file
5
.changeset/lemon-pears-invent.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@pnpm/manifest-utils": patch
|
||||
---
|
||||
|
||||
fix: version set be correct when set empty version
|
||||
@@ -20,6 +20,7 @@
|
||||
},
|
||||
"repository": "https://github.com/pnpm/pnpm/blob/master/packages/manifest-utils",
|
||||
"scripts": {
|
||||
"start": "tsc --watch",
|
||||
"_test": "jest",
|
||||
"test": "pnpm run compile && pnpm run _test",
|
||||
"lint": "eslint src/**/*.ts test/**/*.ts",
|
||||
|
||||
@@ -61,5 +61,5 @@ function findSpec (alias: string, manifest: ProjectManifest): string | undefined
|
||||
|
||||
export function guessDependencyType (alias: string, manifest: ProjectManifest): DependenciesField | undefined {
|
||||
return DEPENDENCIES_FIELDS
|
||||
.find((depField) => Boolean(manifest[depField]?.[alias]))
|
||||
.find((depField) => manifest[depField]?.[alias] === '' || Boolean(manifest[depField]?.[alias]))
|
||||
}
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
import { guessDependencyType } from '@pnpm/manifest-utils'
|
||||
|
||||
test('guessDependencyType()', () => {
|
||||
expect(
|
||||
guessDependencyType('foo', {
|
||||
dependencies: {
|
||||
bar: '1.0.0',
|
||||
},
|
||||
devDependencies: {
|
||||
foo: '',
|
||||
},
|
||||
})
|
||||
).toEqual('devDependencies')
|
||||
|
||||
expect(
|
||||
guessDependencyType('bar', {
|
||||
dependencies: {
|
||||
bar: '1.0.0',
|
||||
},
|
||||
devDependencies: {
|
||||
foo: '1.0.0',
|
||||
},
|
||||
})
|
||||
).toEqual('dependencies')
|
||||
})
|
||||
@@ -153,3 +153,41 @@ test('update --no-save should not update package.json and pnpm-lock.yaml', async
|
||||
expect(lockfile.packages['/peer-a/1.0.1']).toBeTruthy()
|
||||
}
|
||||
})
|
||||
|
||||
// fix: https://github.com/pnpm/pnpm/issues/4196
|
||||
test('update should work normal when set empty string version', async () => {
|
||||
await addDistTag({ package: 'peer-a', version: '1.0.1', distTag: 'latest' })
|
||||
await addDistTag({ package: 'peer-c', version: '2.0.0', distTag: 'latest' })
|
||||
await addDistTag({ package: 'pnpm-foo', version: '2.0.0', distTag: 'latest' })
|
||||
|
||||
const project = prepare({
|
||||
dependencies: {
|
||||
'peer-a': '1.0.0',
|
||||
},
|
||||
devDependencies: {
|
||||
'pnpm-foo': '',
|
||||
'peer-c': '',
|
||||
},
|
||||
})
|
||||
|
||||
await install.handler({
|
||||
...DEFAULT_OPTS,
|
||||
dir: process.cwd(),
|
||||
workspaceDir: process.cwd(),
|
||||
})
|
||||
|
||||
await update.handler({
|
||||
...DEFAULT_OPTS,
|
||||
dir: process.cwd(),
|
||||
latest: true,
|
||||
workspaceDir: process.cwd(),
|
||||
}, ['*'])
|
||||
|
||||
const lockfile = await project.readLockfile()
|
||||
expect(lockfile.packages['/peer-a/1.0.1']).toBeTruthy()
|
||||
expect(lockfile.packages['/peer-c/2.0.0']).toBeTruthy()
|
||||
expect(lockfile.packages['/pnpm-foo/2.0.0']).toBeTruthy()
|
||||
expect(lockfile.dependencies['peer-a']).toEqual('1.0.1')
|
||||
expect(lockfile.devDependencies['pnpm-foo']).toEqual('2.0.0')
|
||||
expect(lockfile.devDependencies['peer-c']).toEqual('2.0.0')
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user