Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGar <gar+gh@danger.computer>2021-03-25 19:46:01 +0300
committerRuy Adorno <ruyadorno@hotmail.com>2021-03-26 00:42:55 +0300
commit59271936d90fbd6956a41967119f578c0ba63db9 (patch)
tree7d98bef224d0f418432dea96d681bf12ffc9b2b4
parent1415b4bdeeaabb6e0ba12b6b1b0cc56502bd64ab (diff)
fix(config): tie save-exact/save-prefix together
Each affects the other PR-URL: https://github.com/npm/cli/pull/2965 Credit: @wraithgar Close: #2965 Reviewed-by: @nlf
-rw-r--r--lib/utils/config/definitions.js6
-rw-r--r--test/lib/utils/config/definitions.js15
-rw-r--r--test/lib/utils/config/flatten.js2
3 files changed, 20 insertions, 3 deletions
diff --git a/lib/utils/config/definitions.js b/lib/utils/config/definitions.js
index ec54d731b..512ea8af9 100644
--- a/lib/utils/config/definitions.js
+++ b/lib/utils/config/definitions.js
@@ -1526,7 +1526,10 @@ define('save-exact', {
Dependencies saved to package.json will be configured with an exact
version rather than using npm's default semver range operator.
`,
- flatten,
+ flatten (key, obj, flatOptions) {
+ // just call the save-prefix flattener, it reads from obj['save-exact']
+ definitions['save-prefix'].flatten('save-prefix', obj, flatOptions)
+ },
})
define('save-optional', {
@@ -1595,6 +1598,7 @@ define('save-prefix', {
`,
flatten (key, obj, flatOptions) {
flatOptions.savePrefix = obj['save-exact'] ? '' : obj['save-prefix']
+ obj['save-prefix'] = flatOptions.savePrefix
},
})
diff --git a/test/lib/utils/config/definitions.js b/test/lib/utils/config/definitions.js
index 49e51ace1..0b80b34d5 100644
--- a/test/lib/utils/config/definitions.js
+++ b/test/lib/utils/config/definitions.js
@@ -760,3 +760,18 @@ t.test('save-prefix', t => {
t.strictSame(flat, { savePrefix: '~1.2.3' })
t.end()
})
+
+t.test('save-exact', t => {
+ const obj = {
+ 'save-exact': true,
+ 'save-prefix': '~1.2.3',
+ }
+ const flat = {}
+ definitions['save-exact']
+ .flatten('save-exact', { ...obj, 'save-exact': true }, flat)
+ t.strictSame(flat, { savePrefix: '' })
+ definitions['save-exact']
+ .flatten('save-exact', { ...obj, 'save-exact': false }, flat)
+ t.strictSame(flat, { savePrefix: '~1.2.3' })
+ t.end()
+})
diff --git a/test/lib/utils/config/flatten.js b/test/lib/utils/config/flatten.js
index 6fc91b484..7e1356392 100644
--- a/test/lib/utils/config/flatten.js
+++ b/test/lib/utils/config/flatten.js
@@ -17,7 +17,6 @@ const obj = {
const flat = flatten(obj)
t.strictSame(flat, {
saveType: 'dev',
- saveExact: true,
savePrefix: '',
'@foobar:registry': 'https://foo.bar.com/',
'//foo.bar.com:_authToken': 'foobarbazquuxasdf',
@@ -30,7 +29,6 @@ t.strictSame(flat, {
process.env.NODE = '/usr/local/bin/node.exe'
flatten({ 'save-dev': false }, flat)
t.strictSame(flat, {
- saveExact: true,
savePrefix: '',
'@foobar:registry': 'https://foo.bar.com/',
'//foo.bar.com:_authToken': 'foobarbazquuxasdf',