diff --git a/cli/src/lib/npm/__tests__/npmProjectUtils-test.js b/cli/src/lib/npm/__tests__/npmProjectUtils-test.js new file mode 100644 index 0000000000..3422d66f6c --- /dev/null +++ b/cli/src/lib/npm/__tests__/npmProjectUtils-test.js @@ -0,0 +1,21 @@ +// @flow +import {mergePackageJsonDependencies} from '../npmProjectUtils'; + +describe('npmProjectUtils', () => { + describe('mergePackageJsonDependencies', () => { + it('does not break with deps that resolve with `npm:...', () => { + expect( + mergePackageJsonDependencies( + { + 'react-intl-next': 'npm:react@16.8.0', + }, + { + 'react-intl-next': 'npm:react@16.8.0', + }, + ), + ).toEqual({ + 'react-intl-next': 'npm:react@16.8.0', + }); + }); + }); +}); diff --git a/cli/src/lib/npm/npmProjectUtils.js b/cli/src/lib/npm/npmProjectUtils.js index 3755262b55..8132bc075b 100644 --- a/cli/src/lib/npm/npmProjectUtils.js +++ b/cli/src/lib/npm/npmProjectUtils.js @@ -186,7 +186,14 @@ export function mergePackageJsonDependencies( const result = {...a}; for (const dep of Object.keys(b)) { const version = b[dep]; - if (a[dep] != null && !intersects(result[dep], version)) { + let doesIntersect; + try { + doesIntersect = intersects(result[dep], version); + } catch (e) { + doesIntersect = result[dep] === version; + } + + if (a[dep] != null && !doesIntersect) { console.log( colors.yellow( "\t Conflicting versions for '%s' between '%s' and '%s'",