Skip to content

Commit

Permalink
Use lowest version when a dependency is in more than one section (#892).
Browse files Browse the repository at this point in the history
  • Loading branch information
raineorshine committed May 14, 2021
1 parent 1293e08 commit e8eb22b
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 10 deletions.
28 changes: 18 additions & 10 deletions lib/versionmanager.js
Original file line number Diff line number Diff line change
Expand Up @@ -310,22 +310,30 @@ async function upgradePackageData(pkgData, oldDependencies, newDependencies, new
*/
function getCurrentDependencies(pkgData = {}, options = {}) {

const deps = options.dep
const depOptions = options.dep
? (options.dep || '').split(',')
: ['dev', 'optional', 'peer', 'prod', 'bundle']

const allDependencies = cint.filterObject(
{
...deps.includes('prod') && pkgData.dependencies,
...deps.includes('dev') && pkgData.devDependencies,
...deps.includes('peer') && pkgData.peerDependencies,
...deps.includes('optional') && pkgData.optionalDependencies,
...deps.includes('bundle') && pkgData.bundleDependencies
},
// map the dependency section option to a full dependency section name
const depSections = depOptions.map(short => short === 'prod' ? 'dependencies' : short + 'Dependencies')

// get all dependencies from the selected sections
// if a dependency appears in more than one section, take the lowest version number
const allDependencies = depSections.reduce((accum, depSection) => {
const isLessThanAccum = (dep, spec) => !accum[dep] || semver.lt(spec, accum[dep])
return {
...accum,
...cint.filterObject(pkgData[depSection], isLessThanAccum)
}
}, {})

// filter & reject dependencies and versions
const filteredDependencies = cint.filterObject(
allDependencies,
filterAndReject(options.filter, options.reject, options.filterVersion, options.rejectVersion)
)

return allDependencies
return filteredDependencies
}

async function getIgnoredUpgrades(current, upgraded, upgradedPeerDependencies, options = {}) {
Expand Down
32 changes: 32 additions & 0 deletions test/index.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -770,4 +770,36 @@ describe('run', function () {
upgrades.should.deep.equal({})
})

it('update devDependency when duplicate dependency is up-to-date', async () => {
const upgrades = await ncu.run({
packageData: JSON.stringify({
dependencies: {
'ncu-test-v2': '2.0.0'
},
devDependencies: {
'ncu-test-v2': '1.0.0'
}
})
})
upgrades.should.deep.equal({
'ncu-test-v2': '2.0.0'
})
})

it('update dependency when duplicate devDependency is up-to-date', async () => {
const upgrades = await ncu.run({
packageData: JSON.stringify({
dependencies: {
'ncu-test-v2': '1.0.0'
},
devDependencies: {
'ncu-test-v2': '2.0.0'
}
})
})
upgrades.should.deep.equal({
'ncu-test-v2': '2.0.0'
})
})

})

0 comments on commit e8eb22b

Please sign in to comment.