`bower.json` 文件中的 resolutions 和 overrides 是什么?

15
bower.json 文件中,resolutionoverrides 属性用于什么?
{
  "name": "name",
  "dependencies": {
    "angular": "~1.4.8",
    ...
    "jquery": "2.2.4"
  },
  "overrides": {
    "ionic": {
      "main": [
        "release/js/ionic.js",
        "release/js/ionic-angular.js"
      ]
    }
  },
  "resolutions": {
    "angular-ui-router": "~0.2.15",
    "angular": "~1.5.3"
  }
}
3个回答

14

分辨率

当冲突发生时,需要解决依赖版本(在bower install之后),分辨率部分就会出现。它是为了在需要解决依赖冲突时做出关于使用哪个具体版本依赖的决策 - bower会自动将此决策作为“resolution”记录注入。因此,下次发生冲突(例如更新依赖树等)时,解决的版本将基于配置文件中的“resolution”数据。

一个示例依赖版本冲突分辨率提示。图片中的文本说:“无法找到适合的 ember 版本,请选择一个:1)ember#〜1.0.0,已解决为 1.0.1,并由 ember-data#0 所需。2)ember#1.5.1,已解决为 1.5.1,并由 melodrama 所需。</a></p>

<p><strong>覆盖</strong></p>

<p>当指向依赖库时,覆盖部分用于覆盖文件引用。</p>

<p>大多数情况下,任务运行器使用bower配置库元数据将链接注入到页面内容中。当我们想要将bootstrap链接注入到页面中时,我们不需要进入“bower_components”文件夹,找到包并调查文件内容。我们可以使用组件元数据来查找可注入文件的主要引用。</p>

<p>“overrides”部分用于更改此数据以使用另一个文件或一组文件作为软件包的主入口点。</p>

<p><a href=bootstrap-sass-official软件包的示例覆盖部分配置。


问题:如果我已经在依赖项中指定了所需的版本,那么是否需要使用解析度? - Moha the almighty camel

4
多个Bower包可以列出同一库的不同版本作为依赖项。 在这种情况下,resolutions部分指定要使用的库的版本。 如果在bower.json中未指定,则运行bower install时会收到命令行提示。 overrides部分使在使用Gulp等任务运行器时覆盖通过Bower安装的资产的默认路径成为可能。 如果您打算将文件从它们在bower_components文件夹中的默认位置移动以适应您的构建过程,则在此类设置中它可能会很方便。

0

我们在 bower.json 文件中使用 resolutions 对象来指定组件名称和版本,以便在运行 bower 命令时自动解决冲突。

Overrides 部分用于覆盖指向依赖库的文件引用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接