Skip to content

Commit 38a0a65

Browse files
committed
fix(config): use exclusive for save types
1 parent 0d4c023 commit 38a0a65

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

workspaces/config/lib/definitions/definitions.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1695,6 +1695,7 @@ const definitions = {
16951695
default: false,
16961696
type: Boolean,
16971697
short: 'D',
1698+
exclusive: ['save-optional', 'save-peer', 'save-prod'],
16981699
description: `
16991700
Save installed packages to a package.json file as \`devDependencies\`.
17001701
`,
@@ -1726,6 +1727,7 @@ const definitions = {
17261727
default: false,
17271728
type: Boolean,
17281729
short: 'O',
1730+
exclusive: ['save-dev', 'save-peer', 'save-prod'],
17291731
description: `
17301732
Save installed packages to a package.json file as
17311733
\`optionalDependencies\`.
@@ -1754,6 +1756,7 @@ const definitions = {
17541756
'save-peer': new Definition('save-peer', {
17551757
default: false,
17561758
type: Boolean,
1759+
exclusive: ['save-dev', 'save-optional', 'save-prod'],
17571760
description: `
17581761
Save installed packages to a package.json file as \`peerDependencies\`
17591762
`,
@@ -1799,6 +1802,7 @@ const definitions = {
17991802
default: false,
18001803
type: Boolean,
18011804
short: 'P',
1805+
exclusive: ['save-dev', 'save-optional', 'save-peer'],
18021806
description: `
18031807
Save installed packages into \`dependencies\` specifically. This is
18041808
useful if a package already exists in \`devDependencies\` or

workspaces/config/test/definitions/definitions.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -693,6 +693,35 @@ t.test('saveType', t => {
693693
t.end()
694694
})
695695

696+
t.test('save-dev && save-optional warn when used together', t => {
697+
const warn = []
698+
const base = require('proc-log')
699+
const fakeLog = {
700+
...base.log,
701+
warn: (...args) => warn.push(args),
702+
}
703+
704+
const defs = mockDefs({
705+
'proc-log': {
706+
...base,
707+
log: fakeLog,
708+
},
709+
})
710+
711+
const obj = { 'save-dev': true, 'save-optional': true }
712+
const flat = {}
713+
714+
defs['save-dev'].flatten('save-dev', obj, flat)
715+
defs['save-optional'].flatten('save-optional', obj, flat)
716+
717+
t.strictSame(warn, [
718+
['invalid', '--save-dev and --save-optional are mutually exclusive, last one wins'],
719+
['invalid', '--save-dev and --save-optional are mutually exclusive, last one wins'],
720+
])
721+
722+
t.end()
723+
})
724+
696725
t.end()
697726
})
698727

0 commit comments

Comments
 (0)