fix: don't include the version for local directory dependencies (#6695)

There is no need to include the version of a dependency in the lockfile,

if that dependency is installed from a local directory
This commit is contained in:
Zoltan Kochan
2023-06-21 20:04:25 +03:00
committed by GitHub
parent f0af6b02cf
commit 61f22f9efa
4 changed files with 10 additions and 22 deletions

View File

@@ -0,0 +1,6 @@
---
"@pnpm/resolve-dependencies": patch
"pnpm": patch
---
Don't add the version of a local directory dependency to the lockfile. This information is not used anywhere by pnpm and is only causing more Git conflicts [#6695](https://github.com/pnpm/pnpm/pull/6695).

View File

@@ -151,7 +151,6 @@ test('inject local packages', async () => {
},
id: 'file:project-1',
name: 'project-1',
version: '1.0.0',
peerDependencies: {
'is-positive': '>=1.0.0',
},
@@ -168,7 +167,6 @@ test('inject local packages', async () => {
},
id: 'file:project-2',
name: 'project-2',
version: '1.0.0',
dependencies: {
'project-1': 'file:project-1(is-positive@2.0.0)',
},
@@ -223,7 +221,6 @@ test('inject local packages', async () => {
},
id: 'file:project-1',
name: 'project-1',
version: '1.0.0',
peerDependencies: {
'is-positive': '>=1.0.0',
},
@@ -383,7 +380,6 @@ test('inject local packages declared via file protocol', async () => {
},
id: 'file:project-1',
name: 'project-1',
version: '1.0.0',
peerDependencies: {
'is-positive': '>=1.0.0',
},
@@ -400,7 +396,6 @@ test('inject local packages declared via file protocol', async () => {
},
id: 'file:project-2',
name: 'project-2',
version: '1.0.0',
dependencies: {
'project-1': 'file:project-1(is-positive@2.0.0)',
},
@@ -456,7 +451,6 @@ test('inject local packages declared via file protocol', async () => {
},
id: 'file:project-1',
name: 'project-1',
version: '1.0.0',
peerDependencies: {
'is-positive': '>=1.0.0',
},
@@ -601,7 +595,6 @@ test('inject local packages when the file protocol is used', async () => {
},
id: 'file:project-1',
name: 'project-1',
version: '1.0.0',
peerDependencies: {
'is-positive': '>=1.0.0',
},
@@ -618,7 +611,6 @@ test('inject local packages when the file protocol is used', async () => {
},
id: 'file:project-2',
name: 'project-2',
version: '1.0.0',
dependencies: {
'project-1': 'file:project-1(is-positive@2.0.0)',
},
@@ -673,7 +665,6 @@ test('inject local packages when the file protocol is used', async () => {
},
id: 'file:project-1',
name: 'project-1',
version: '1.0.0',
peerDependencies: {
'is-positive': '>=1.0.0',
},
@@ -796,7 +787,6 @@ test('inject local packages and relink them after build', async () => {
},
id: 'file:project-1',
name: 'project-1',
version: '1.0.0',
peerDependencies: {
'is-positive': '1.0.0',
},
@@ -907,7 +897,6 @@ test('inject local packages and relink them after build (file protocol is used)'
},
id: 'file:project-1',
name: 'project-1',
version: '1.0.0',
peerDependencies: {
'is-positive': '1.0.0',
},
@@ -1081,7 +1070,6 @@ test('inject local packages when node-linker is hoisted', async () => {
},
id: 'file:project-1',
name: 'project-1',
version: '1.0.0',
peerDependencies: {
'is-positive': '>=1.0.0',
},
@@ -1099,7 +1087,6 @@ test('inject local packages when node-linker is hoisted', async () => {
},
id: 'file:project-2',
name: 'project-2',
version: '1.0.0',
dependencies: {
'@pnpm.e2e/dep-of-pkg-with-1-dep': '101.0.0',
'project-1': 'file:project-1(is-positive@2.0.0)',
@@ -1266,7 +1253,6 @@ test('inject local packages when node-linker is hoisted and dependenciesMeta is
},
id: 'file:project-1',
name: 'project-1',
version: '1.0.0',
peerDependencies: {
'is-positive': '>=1.0.0',
},
@@ -1284,7 +1270,6 @@ test('inject local packages when node-linker is hoisted and dependenciesMeta is
},
id: 'file:project-2',
name: 'project-2',
version: '1.0.0',
dependencies: {
'@pnpm.e2e/dep-of-pkg-with-1-dep': '101.0.0',
'project-1': 'file:project-1(is-positive@2.0.0)',

View File

@@ -403,7 +403,6 @@ test('re-install should update local file dependency', async () => {
'file:../local-pkg': {
resolution: { directory: '../local-pkg', type: 'directory' },
name: 'local-pkg',
version: '1.0.0',
dev: false,
},
},
@@ -437,7 +436,6 @@ test('re-install should update local file dependency', async () => {
'file:../local-pkg': {
resolution: { directory: '../local-pkg', type: 'directory' },
name: 'local-pkg',
version: '1.0.0',
dev: false,
dependencies: {
'is-positive': '1.0.0',
@@ -462,7 +460,6 @@ test('re-install should update local file dependency', async () => {
'file:../local-pkg': {
resolution: { directory: '../local-pkg', type: 'directory' },
name: 'local-pkg',
version: '1.0.0',
dev: false,
dependencies: {
'is-positive': '2.0.0',

View File

@@ -6,7 +6,7 @@ import {
pruneSharedLockfile,
type ResolvedDependencies,
} from '@pnpm/prune-lockfile'
import { type Resolution } from '@pnpm/resolver-base'
import { type DirectoryResolution, type Resolution } from '@pnpm/resolver-base'
import { type Registries } from '@pnpm/types'
import * as dp from '@pnpm/dependency-path'
import getNpmTarballUrl from 'get-npm-tarball-url'
@@ -97,9 +97,9 @@ function toLockfileDependency (
if (dp.isAbsolute(opts.depPath)) {
result['name'] = pkg.name
// There is no guarantee that a non-npmjs.org-hosted package
// is going to have a version field
if (pkg.version) {
// There is no guarantee that a non-npmjs.org-hosted package is going to have a version field.
// Also, for local directory dependencies, the version is not needed.
if (pkg.version && (lockfileResolution as DirectoryResolution).type !== 'directory') {
result['version'] = pkg.version
}
}