简体   繁体   English

如何隔离凉亭中的依赖关系

[英]how to isolate dependencies in bower

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. 我记得读到某个地方,在凉亭中你可以将软件包作为子树安装,这意味着一个项目可以使用同一个库的多个版本..每个版本的库都充当了需要不同版本的其他库的依赖。

as an example.. suppose I'm working on a project which uses both angular-google-maps and ui-slider .. angular-google-maps requires at least angular 1.2.18+ and ui-slider needs angular 1.0.8 ` I was hoping to get something like this (ie output of bower list): 作为一个例子..假设我正在开发一个使用angular-google-mapsui-slider .. angular-google-maps至少需要angular 1.2.18+ui-slider需要angular 1.0.8我希望得到这样的东西(即凉亭列表的输出):

├── 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
│ ├── ..

instead what happens is that when i attempt to install ui-slider on my existent project that already uses angular 1.2.18 , I get this prompt: 相反,当我尝试在已经使用angular 1.2.18现有项目上安装ui-slider时,我得到以下提示:

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#>=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

I naturally choose one to get 1.0.8: 我自然会选择一个获得1.0.8:

[?] 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

However when I run bower list I get: 但是,当我运行bower list我得到:

├── 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)
..

question: why did bower make angular 1.0.8 the default angular and the one used for all my other libraries.. rather than keep angular 1.2.18 and just use angular 1.0.8 for angular-ui-slider ? 问题:为什么凉亭使angular 1.0.8成为默认角度和用于我所有其他库的一个...而不是保持angular 1.2.18并且只使用angular 1.0.8用于angular-ui-slider

You can't have two versions of angular running at the same time. 您不能同时运行两个版本的角度运行。 So bower asks you to choose the one you want to install. 所以bower要求您选择要安装的那个。 Here you choose 1, so it installs angular 1.0.8 dependency for all your package regardless of the compatibility. 在这里,您选择1,因此无论兼容性如何,它都会为您的所有包安装角度1.0.8依赖性。
It's a behaviour intended by design. 这是设计意图的行为。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM