diff --git a/lib/manager/npm/package.js b/lib/manager/npm/package.js
index f8a420226c2bab67ff41c84eb08916187d3255be..d6cae10aa65cdc02c91d8b81fc3205308b41aa4c 100644
--- a/lib/manager/npm/package.js
+++ b/lib/manager/npm/package.js
@@ -17,6 +17,14 @@ function getRangeStrategy(config) {
     currentVersion,
     rangeStrategy,
   } = config;
+  const isComplexRange = parseRange(currentVersion).length > 1;
+  if (rangeStrategy === 'bump' && isComplexRange) {
+    logger.info(
+      { currentVersion },
+      'Replacing bump strategy for complex range with widen'
+    );
+    return 'widen';
+  }
   if (rangeStrategy !== 'auto') {
     return rangeStrategy;
   }
@@ -35,8 +43,7 @@ function getRangeStrategy(config) {
     logger.debug('Widening peer dependencies');
     return 'widen';
   }
-  const semverParsed = parseRange(currentVersion);
-  if (semverParsed.length > 1) {
+  if (isComplexRange) {
     return 'widen';
   }
   return 'replace';
diff --git a/test/manager/npm/package.spec.js b/test/manager/npm/package.spec.js
index b3b660a284cfbf9b7b562ec5272e3c24ffa361d0..162124db68579f70a7797ae56572f5b803740c71 100644
--- a/test/manager/npm/package.spec.js
+++ b/test/manager/npm/package.spec.js
@@ -37,6 +37,14 @@ describe('lib/manager/npm/package', () => {
       };
       expect(npm.getRangeStrategy(config)).toEqual('widen');
     });
+    it('widens complex bump', () => {
+      const config = {
+        rangeStrategy: 'bump',
+        depType: 'dependencies',
+        currentVersion: '^1.6.0 || ^2.0.0',
+      };
+      expect(npm.getRangeStrategy(config)).toEqual('widen');
+    });
     it('defaults to replace', () => {
       const config = { rangeStrategy: 'auto', depType: 'dependencies' };
       expect(npm.getRangeStrategy(config)).toEqual('replace');