Javascript 将AngularJS从1.5.0更新到1.5.8

Javascript 将AngularJS从1.5.0更新到1.5.8,javascript,angularjs,bower,Javascript,Angularjs,Bower,我有以下bower.json文件: { "private": true, "dependencies": { "angular": "~1.5.0", "angular-mocks": "^1.5.7", "bootstrap": "^3.3.6", "bootstrap-rtl": "^3.4.0", "font-awesome": "^4.6.3", "moment": "^2.13.0", "angular-animate

我有以下bower.json文件:

{  
  "private": true,
  "dependencies": {
    "angular": "~1.5.0",
    "angular-mocks": "^1.5.7",
    "bootstrap": "^3.3.6",
    "bootstrap-rtl": "^3.4.0",
    "font-awesome": "^4.6.3",
    "moment": "^2.13.0",
    "angular-animate": "^1.5.6",
    "angular-sanitize": "^1.5.6",
    "angular-ui-router": "~0.2.15",
    "angular-translate": "^2.11.0",
    "angular-touch": "^1.5.7",
    "angular-messages": "^1.5.6",
    "angular-cookies": "^1.5.8",
    "angular-ui-grid": "^3.1.1",
    "angular-ui-sortable": "^0.14.2",
    "angular-bootstrap-affix": "^0.2.2",
    "theia-sticky-sidebar": "^1.4.0",
    "angular-ui-router-title": "^0.0.4",
    "angularjs-slider": "^4.0.2",
    "angular-fcsa-number": "^1.5.3",
    "angularPrint": "angular-print#^0.3.8",
    "ng-virtual-keyboard": "^0.3.0",
    "keyboard": "^1.26.1",
    "angular-spinner": "^0.8.1",
    "ng-ip-address": "^1.1.10",
    "file-saver": "^1.3.2",
    "ng-iban": "^1.1.0",
    "pdfmake": "^0.1.20",
    "ng-device-detector": "^3.0.1",
    "checklist-model": "^0.10.0",
    "angular-dynamic-number": "^2.1.1",
    "ng-file-upload": "^12.2.13",
    "ng-file-upload-shim": "^12.2.13",
    "angular-ui-select": "^0.19.6",
    "angular-dragula": "^1.2.8",
    "angular-drag-and-drop-lists": "^2.0.0",
    "angular-slick-carousel": "^3.1.7",
    "angular-slick": "^0.2.1",
    "drag-drop-webkit-mobile": "^1.2.0",
    "iban": "^0.0.8",
    "highcharts": "^5.0.9"
  }
}
我只想将AngularJS更新到版本
1.5.8
。什么是最好的方式做这个更新没有任何头痛?我试图安装
bowerinstall angular#1.5.8--save
,但是当其他团队成员进入
bower update
时,他们的整个项目中断了,因为更新了很多包。
如何只更新AngularJS有什么好主意吗?

只在本地更新AngularJS包是可行的,但是当需要安装新项目并且需要安装依赖项时,您将以任何方式遇到这个问题。我建议您按照自己的意愿设置依赖项,并确保不允许与不希望安装的版本发生偏差。我将添加一些关于如何解释版本号的信息

使用
bowerupdate
将仅将该包更新为
bower.json

假设版本号如下:
1.5.0
。 每个数字都有一个平均值,
1
是主要版本,
5
是次要版本,
0
是补丁号。像这样的
major.minor.patch

插入符号(
^
)表示不能更改主版本,但可以更改次版本和修补程序版本。因此,
^1.5.0
的范围从
1.5.0
2.0.0
。因此,在您的原因中,因为您有
^1.5.0
,Angular将更新为最新的非主要版本更改,即
1.6.3

波浪号(
~
)仅表示修补程序版本更改(如果版本中未指定修补程序,则表示次要版本)


请在此处阅读更多信息:

仅在本地更新angular软件包是可行的,但是当需要安装新项目并且希望安装依赖项时,您将以任何方式遇到此问题。我建议您按照自己的意愿设置依赖项,并确保不允许与不希望安装的版本发生偏差。我将添加一些关于如何解释版本号的信息

使用
bowerupdate
将仅将该包更新为
bower.json

假设版本号如下:
1.5.0
。 每个数字都有一个平均值,
1
是主要版本,
5
是次要版本,
0
是补丁号。像这样的
major.minor.patch

插入符号(
^
)表示不能更改主版本,但可以更改次版本和修补程序版本。因此,
^1.5.0
的范围从
1.5.0
2.0.0
。因此,在您的原因中,因为您有
^1.5.0
,Angular将更新为最新的非主要版本更改,即
1.6.3

波浪号(
~
)仅表示修补程序版本更改(如果版本中未指定修补程序,则表示次要版本)

请在此处阅读更多信息:

尝试
“angular”:“1.5.8”
,然后运行
bower update
而不是
bower update
。您可以在所有依赖项上切换到tilde
~
,以确保只更新次要版本。请注意,
角度模拟
与AngularJS版本不对应

用最简单的术语来说,波浪线匹配最新的次要版本 (中间的数字)~1.2.3将匹配所有1.2.x版本,但将 小姐1.3.0

另一方面,插入符号更轻松。它会将您更新到 最新的主要版本(第一个编号)^1.2.3将匹配 包括1.3.0在内的任何1.x.x版本,但将推迟到2.0.0

尝试
“angular”:“1.5.8”
,然后运行
bower update
而不是
bower update
。您可以在所有依赖项上切换到tilde
~
,以确保只更新次要版本。请注意,
角度模拟
与AngularJS版本不对应

用最简单的术语来说,波浪线匹配最新的次要版本 (中间的数字)~1.2.3将匹配所有1.2.x版本,但将 小姐1.3.0

另一方面,插入符号更轻松。它会将您更新到 最新的主要版本(第一个编号)^1.2.3将匹配 包括1.3.0在内的任何1.x.x版本,但将推迟到2.0.0


当您使用只更新次要软件包版本的
^
时,它不应该中断。只需运行
bowerupdate
,看看会发生什么。“应该”——这完全取决于软件包及其开发人员。请尝试更新
bower.json
文件,从
bower\u组件中删除angularjs,然后运行
bower安装
。它应该只安装缺少的依赖项。@Lin
angular messages
angular animation
和许多其他依赖项,这些依赖项更新为导致项目中断的
1.6.x
版本。
NPM
具有
shrinkwrap
功能,允许您完全控制依赖项以及嵌套依赖项(第三方依赖项)。对于
Bower
,有一种实现这种功能的方法。然而,一个快速的谷歌推出了大量的libs,声称能为
Bower
实现同样的行为。我们在
NPM
中实现了收缩包装,这些问题从那时起就没有出现过。仅供参考。尝试
“angular”:“1.5.8”
并运行
bower update
而不是
bower update
。您可以在所有依赖项上切换到tilde
~
,以确保仅更新次要版本。当您使用仅更新次要软件包版本的
^
时,它不应中断。只需运行
bowerupdate
,看看会发生什么。“应该”——这完全取决于软件包及其开发人员。请尝试更新
bower.json
文件,从
bower\u组件中删除angularjs,然后在中运行
bower
{
    "private": true,
    "dependencies": {
        "angular": "1.5.8",
        "angular-mocks": "~1.5.7",
        "bootstrap": "~3.3.6",
        "bootstrap-rtl": "~3.4.0",
        "font-awesome": "~4.6.3",
        "moment": "~2.13.0",
        "angular-animate": "~1.5.6",
        "angular-sanitize": "~1.5.6",
        "angular-ui-router": "~0.2.15",
        "angular-translate": "~2.11.0",
        "angular-touch": "~1.5.7",
        "angular-messages": "~1.5.6",
        "angular-cookies": "~1.5.8",
        "angular-ui-grid": "~3.1.1",
        "angular-ui-sortable": "~0.14.2",
        "angular-bootstrap-affix": "~0.2.2",
        "theia-sticky-sidebar": "~1.4.0",
        "angular-ui-router-title": "~0.0.4",
        "angularjs-slider": "~4.0.2",
        "angular-fcsa-number": "~1.5.3",
        "angularPrint": "angular-print#~0.3.8",
        "ng-virtual-keyboard": "~0.3.0",
        "keyboard": "~1.26.1",
        "angular-spinner": "~0.8.1",
        "ng-ip-address": "~1.1.10",
        "file-saver": "~1.3.2",
        "ng-iban": "~1.1.0",
        "pdfmake": "~0.1.20",
        "ng-device-detector": "~3.0.1",
        "checklist-model": "~0.10.0",
        "angular-dynamic-number": "~2.1.1",
        "ng-file-upload": "~12.2.13",
        "ng-file-upload-shim": "~12.2.13",
        "angular-ui-select": "~0.19.6",
        "angular-dragula": "~1.2.8",
        "angular-drag-and-drop-lists": "~2.0.0",
        "angular-slick-carousel": "~3.1.7",
        "angular-slick": "~0.2.1",
        "drag-drop-webkit-mobile": "~1.2.0",
        "iban": "~0.0.8",
        "highcharts": "~5.0.9"
    }
}