mirror of
https://github.com/pnpm/pnpm.git
synced 2026-04-28 02:53:15 -04:00
feat: a prerelease version is always saved as an exact version (#4435)
This commit is contained in:
14
.changeset/shaggy-boxes-care.md
Normal file
14
.changeset/shaggy-boxes-care.md
Normal 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"
|
||||
}
|
||||
}
|
||||
```
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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 }))
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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:*",
|
||||
|
||||
@@ -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
807
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@@ -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",
|
||||
|
||||
@@ -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": {
|
||||
|
||||
Reference in New Issue
Block a user