feat: a prerelease version is always saved as an exact version (#4435)

This commit is contained in:
Zoltan Kochan
2022-03-15 00:03:10 +02:00
committed by GitHub
parent 2d0f2ba0f2
commit 0845a87044
19 changed files with 485 additions and 380 deletions

View File

@@ -0,0 +1,14 @@
---
"pnpm": major
"@pnpm/resolve-dependencies": major
---
A prerelease version is always added as an exact version to `package.json`. If the `next` version of `foo` is `1.0.0-beta.1` then running `pnpm add foo@next` will add this to `package.json`:
```json
{
"dependencies": {
"foo": "1.0.0-beta.1"
}
}
```

View File

@@ -37,7 +37,7 @@
"@commitlint/prompt-cli": "^16.0.0",
"@pnpm/eslint-config": "workspace:*",
"@pnpm/meta-updater": "0.0.6",
"@pnpm/registry-mock": "2.14.0",
"@pnpm/registry-mock": "2.15.1",
"@pnpm/tsconfig": "workspace:*",
"@types/jest": "^27.4.0",
"@types/node": "^14.17.32",

View File

@@ -74,7 +74,7 @@
"@pnpm/logger": "^4.0.0",
"@pnpm/package-store": "workspace:12.1.12",
"@pnpm/prepare": "workspace:*",
"@pnpm/registry-mock": "2.14.0",
"@pnpm/registry-mock": "2.15.1",
"@pnpm/store-path": "^5.0.0",
"@pnpm/test-fixtures": "workspace:*",
"@types/fs-extra": "^9.0.5",

View File

@@ -264,6 +264,13 @@ test('multiple scoped modules (@rstacruz/...)', async () => {
expect(typeof project.requireModule('@rstacruz/travis-encrypt')).toBe('function')
})
test('installing a beta version of a package', async () => {
prepareEmpty()
const manifest = await addDependenciesToPackage({}, ['beta-version'], await testDefaults())
expect(manifest.dependencies?.['beta-version']).toBe('1.0.0-beta.0')
})
test('nested scoped modules (test-pnpm-issue219 -> @zkochan/test-pnpm-issue219)', async () => {
const project = prepareEmpty()
await addDependenciesToPackage({}, ['test-pnpm-issue219@1.0.2'], await testDefaults({ fastUnpack: false }))

View File

@@ -22,7 +22,7 @@
"@pnpm/package-store": "workspace:12.1.12",
"@pnpm/prepare": "workspace:*",
"@pnpm/read-projects-context": "workspace:5.0.19",
"@pnpm/registry-mock": "2.14.0",
"@pnpm/registry-mock": "2.15.1",
"@pnpm/store-path": "^5.0.0",
"@pnpm/test-fixtures": "workspace:*",
"@types/fs-extra": "^9.0.5",

View File

@@ -65,7 +65,7 @@
"@pnpm/logger": "^4.0.0",
"@pnpm/package-requester": "workspace:17.0.0",
"@pnpm/package-store": "workspace:12.1.12",
"@pnpm/registry-mock": "2.14.0",
"@pnpm/registry-mock": "2.15.1",
"@pnpm/test-fixtures": "workspace:*",
"@types/normalize-path": "^3.0.0",
"@types/ramda": "0.27.39",

View File

@@ -39,7 +39,7 @@
"@pnpm/modules-yaml": "workspace:9.1.1",
"@pnpm/plugin-commands-installation": "workspace:8.4.4",
"@pnpm/prepare": "workspace:*",
"@pnpm/registry-mock": "2.14.0",
"@pnpm/registry-mock": "2.15.1",
"@pnpm/test-fixtures": "workspace:*",
"@types/is-ci": "^3.0.0",
"@types/proxyquire": "^1.3.28",

View File

@@ -38,7 +38,7 @@
"@pnpm/plugin-commands-installation": "workspace:8.4.4",
"@pnpm/plugin-commands-listing": "workspace:4.1.11",
"@pnpm/prepare": "workspace:*",
"@pnpm/registry-mock": "2.14.0",
"@pnpm/registry-mock": "2.15.1",
"@types/ramda": "0.27.39",
"execa": "npm:safe-execa@^0.1.1",
"strip-ansi": "^6.0.0",

View File

@@ -38,7 +38,7 @@
"@pnpm/plugin-commands-installation": "workspace:8.4.4",
"@pnpm/plugin-commands-outdated": "workspace:5.1.10",
"@pnpm/prepare": "workspace:*",
"@pnpm/registry-mock": "2.14.0",
"@pnpm/registry-mock": "2.15.1",
"@types/lru-cache": "^5.1.0",
"@types/ramda": "0.27.39",
"@types/wrap-ansi": "^3.0.0",

View File

@@ -39,7 +39,7 @@
"@pnpm/logger": "^4.0.0",
"@pnpm/plugin-commands-publishing": "workspace:4.5.2",
"@pnpm/prepare": "workspace:*",
"@pnpm/registry-mock": "2.14.0",
"@pnpm/registry-mock": "2.15.1",
"@types/cross-spawn": "^6.0.2",
"@types/npm-packlist": "^1.1.2",
"@types/proxyquire": "^1.3.28",

View File

@@ -37,7 +37,7 @@
"@pnpm/logger": "^4.0.0",
"@pnpm/plugin-commands-rebuild": "workspace:5.4.14",
"@pnpm/prepare": "workspace:*",
"@pnpm/registry-mock": "2.14.0",
"@pnpm/registry-mock": "2.15.1",
"@pnpm/test-fixtures": "workspace:*",
"@types/ramda": "0.27.39",
"@types/semver": "^7.3.4",

View File

@@ -24,12 +24,14 @@ test('rebuilds dependencies', async () => {
'add',
'--save-dev',
'pre-and-postinstall-scripts-example',
'pnpm/test-git-fetch#main',
'pnpm/test-git-fetch#299c6d89507571462b992b92407a8a07663e32ee',
'--registry',
REGISTRY,
'--store-dir',
storeDir,
'--ignore-scripts',
'--cache-dir',
cacheDir,
])
let modules = await project.readModulesManifest()

View File

@@ -38,7 +38,7 @@
"@pnpm/logger": "^4.0.0",
"@pnpm/plugin-commands-script-runners": "workspace:4.6.2",
"@pnpm/prepare": "workspace:*",
"@pnpm/registry-mock": "2.14.0",
"@pnpm/registry-mock": "2.15.1",
"@types/ramda": "0.27.39",
"is-windows": "^1.0.2",
"write-yaml-file": "^4.2.0"

View File

@@ -38,7 +38,7 @@
"@pnpm/logger": "^4.0.0",
"@pnpm/plugin-commands-store": "workspace:4.1.13",
"@pnpm/prepare": "workspace:*",
"@pnpm/registry-mock": "2.14.0",
"@pnpm/registry-mock": "2.15.1",
"@types/archy": "0.0.31",
"@types/ramda": "0.27.39",
"@types/ssri": "^7.1.0",

View File

@@ -55,7 +55,7 @@
"@pnpm/prepare": "workspace:*",
"@pnpm/read-package-json": "workspace:5.0.12",
"@pnpm/read-project-manifest": "workspace:2.0.13",
"@pnpm/registry-mock": "2.14.0",
"@pnpm/registry-mock": "2.15.1",
"@pnpm/run-npm": "workspace:3.1.0",
"@pnpm/tabtab": "^0.1.2",
"@pnpm/ts-execution-runtime": "workspace:*",

View File

@@ -6,6 +6,7 @@ import {
updateProjectManifestObject,
} from '@pnpm/manifest-utils'
import versionSelectorType from 'version-selector-type'
import semver from 'semver'
import { ResolvedDirectDependency } from './resolveDependencyTree'
import { ImporterToResolve } from '.'
@@ -134,6 +135,10 @@ function getPrefPreferSpecifiedSpec (
}
}
}
// A prerelease version is always added as an exact version
if (semver.parse(opts.version)?.prerelease.length) {
return `${prefix}${opts.version}`
}
return `${prefix}${createVersionSpec(opts.version, opts.pinnedVersion)}`
}

807
pnpm-lock.yaml generated
View File

File diff suppressed because it is too large Load Diff

View File

@@ -45,7 +45,7 @@
"@pnpm/constants": "workspace:5.0.0",
"@pnpm/lockfile-types": "workspace:3.2.0",
"@pnpm/modules-yaml": "workspace:9.1.1",
"@pnpm/registry-mock": "2.14.0",
"@pnpm/registry-mock": "2.15.1",
"@pnpm/types": "workspace:7.10.0",
"is-windows": "^1.0.2",
"isexe": "2.0.0",

View File

@@ -42,7 +42,7 @@
},
"dependencies": {
"@pnpm/cafs": "workspace:3.0.15",
"@pnpm/registry-mock": "2.14.0",
"@pnpm/registry-mock": "2.15.1",
"path-exists": "^4.0.0"
},
"devDependencies": {