bower.json中的resolutions字段

bower中有一个resolutions字段可以进行配置,在bower.json中,添加这个字段,可以用来解决一些版本冲突问题,它的写法和dependencies是一样的,但是它的作用主要是指当依赖的包存在版本冲突时,使用哪一个包。

比如你的applicationA中依赖两个包B,C,而B和C都依赖第三个包D,可是依赖的版本不一样,比如B依赖~1.5.0,而C依赖^1.6.0,这个时候,bower在A中执行install的时候,会提示信息,比如:

Unable to find a suitable version for ember, please choose one:
    1) ember#~1.0.0 which resolved to 1.0.1 and is required by ember-data#0.0.14
    2) ember#1.5.1 which resolved to 1.5.1 and is required by melodrama

这个时候你手动选择,可以选2,然后回车。

但是如果在A的bower.json中加入resolutions这个字段后就不一样了:

"resolutions": {
  "D": "~1.5.0"
}

这个时候在A中执行bower install不会提示上面的信息,而是直接使用~1.5.0作为版本号。

resolutions的作用就是在所依赖的包依赖的第三方包版本冲突时,用resolutions中规定的版本号来确认。

一般来说,只有在application中的bower.json中才这样做,也就是说一般发布的component中不要使用resolutions这个字段,如果是在一个component的json里去写,反而可能引起一些更复杂的问题。

2017-03-14