title: how to isolate dependencies in bower
body: <p>I recall reading somewhere that in bower you can install packages as subtrees, meaning that one project can use multiple versions of the same library.. with each version of the library acting as a dependency for other libraries that need the different versions.</p>
  
  <p>as an example.. suppose I'm working on a project which uses both <code>angular-google-maps</code> and <code>ui-slider</code>.. 
  <code>angular-google-maps</code> requires at least <code>angular 1.2.18+</code> and <code>ui-slider</code> needs <code>angular 1.0.8</code>
  `
  I was hoping to get something like this (ie output of bower list):</p>
  
  <pre><code>├── angular#1.2.18
  ├─┬ angular-google-maps#1.1.2 extraneous (latest is 1.1.6)
  │ ├── angular#1.2.18
  │ └── ..
  ├─┬ angular-ui-slider#0.0.2
  │ ├── angular#1.0.8
  │ ├── ..
  </code></pre>
  
  <p>instead what happens is that when i attempt to install ui-slider on my existent project that <em>already</em> uses <code>angular 1.2.18</code>, I get this prompt:</p>
  
  <pre><code>Unable to find a suitable version for angular, please choose one:
      1) angular#~1.0.x which resolved to 1.0.8 and is required by angular-ui-slider#0.0.2 
      2) angular#1.2.5 which resolved to 1.2.5 and is required by angular-sanitize#1.2.5 
      3) angular#1.2.18 which resolved to 1.2.18 and is required by angular-brunch-seed 
      4) angular#&gt;=1 which resolved to 1.2.19 and is required by angular-bootstrap#0.5.0 
      5) angular#~1.2.0 which resolved to 1.2.19 and is required by angular-masonry#0.8.1 
      6) angular#1.2.x which resolved to 1.2.19 and is required by angular-google-maps#1.1.2 
      7) angular#1.2.19 which resolved to 1.2.19 and is required by angular-animate#1.2.19 
      8) angular#* which resolved to 1.2.19 and is required by restangular#1.4.0
  
  Prefix the choice with ! to persist it to bower.json
  </code></pre>
  
  <p>I naturally choose one to get 1.0.8:</p>
  
  <pre><code>[?] Answer: 1
  bower angular#~1.0.x                    install angular#1.0.8
  bower angular-ui-slider#~0.0.2          install angular-ui-slider#0.0.2
  </code></pre>
  
  <p>However when I run <code>bower list</code> I get:</p>
  
  <pre><code>├── angular#1.0.8 incompatible with 1.2.18 (1.2.18 available, latest is 1.3.0-build.2867+sha.f07af61)
  ├─┬ angular-animate#1.2.19 (latest is 1.3.0-build.2867+sha.f07af61)
  │ └── angular#1.0.8 incompatible with 1.2.19 (1.2.19 available, latest is 1.3.0-build.2867+sha.f07af61)
  ├─┬ angular-bootstrap#0.5.0 (latest is 0.11.0)
  │ └── angular#1.0.8 (1.3.0-build.2867+sha.f07af61 available)
  ├─┬ angular-cookies#1.2.5 (latest is 1.3.0-build.2867+sha.f07af61)
  │ └── angular#1.0.8 incompatible with 1.2.5 (1.2.5 available, latest is 1.3.0-build.2867+sha.f07af61)
  ├─┬ angular-google-maps#1.1.2 extraneous (latest is 1.1.6)
  │ ├── angular#1.0.8 incompatible with 1.2.x (1.2.19 available, latest is 1.3.0-
  ├─┬ angular-ui-slider#0.0.2
  │ ├── angular#1.0.8 (latest is 1.3.0-build.2867+sha.f07af61)
  ..
  </code></pre>
  
  <p>question: why did bower make <code>angular 1.0.8</code> the <em>default</em> angular and the one used for <em>all</em> my other libraries.. rather than keep <code>angular 1.2.18</code> and just use <code>angular 1.0.8</code> for <code>angular-ui-slider</code>?</p>