`bower.json` 文件中的分辨率和覆盖是什么?

What's resolutions and overrides in a `bower.json` file?

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"
  }
}

分辨率

出现冲突时需要解决依赖版本(bower install之后)时出现解决部分。它用于在需要解决依赖冲突时决定使用哪个具体版本的依赖 - Bower 自动将此决定作为 "resolution" 记录注入。所以下次发生冲突时(更新依赖树等),解决的版本将基于配置文件中的 "resolution" 数据。

覆盖

覆盖部分用于在指向依赖库时覆盖文件引用。

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

"overrides" 部分用于更改此数据以使用另一个文件,甚至一组文件作为包的主要入口点。

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

覆盖部分用于在指向依赖库时覆盖文件引用。

多个 Bower 包可以列出同一库的不同版本作为依赖项。 resolutions 部分指定每当发生此类情况时要使用的库版本。如果未在 bower.json 中指定,您将在 运行 bower install.

时收到命令行提示

overrides 部分可以在使用像 Gulp 这样的任务运行程序时覆盖通过 Bower 安装的资产的默认路径。例如,如果您打算将文件从 bower_components 文件夹中的默认位置移动以适应您的构建过程,它在这种类型的设置中可能会很方便。