angular-cli package.json和ng -v之间的区别是什么?

时间:2017-07-06 14:38:52

标签: angular angular-cli

我的package.json中有这个版本的依赖项

"dependencies": {
  "@angular/animations": "^4.1.3",
  "@angular/common": "^4.0.0",
  "@angular/compiler": "^4.0.0",
  "@angular/core": "^4.0.0",
  "@angular/forms": "^4.0.0",
  "@angular/http": "^4.0.0",
  "@angular/platform-browser": "^4.0.0",
  "@angular/platform-browser-dynamic": "^4.0.0",
  "@angular/router": "^4.0.0",


"devDependencies": {
   "@angular/cli": "1.0.6",
   "@angular/compiler-cli": "^4.0.0",

并在项目中执行ng -v

$ ng -v
@angular/animations: 4.2.4
@angular/common: 4.2.4
@angular/compiler: 4.2.4
@angular/core: 4.2.4
@angular/forms: 4.2.4
@angular/http: 4.2.4
@angular/platform-browser: 4.2.4
@angular/platform-browser-dynamic: 4.2.4
@angular/router: 4.2.4
@angular/cli: 1.0.6
@angular/compiler-cli: 4.2.4

项目4.0.0或4.2.4中当前​​版本的@angular是什么?

2 个答案:

答案 0 :(得分:4)

package.json中的版本是版本范围。

例如,如果@angular/core的版本为^4.0.0,则类似4.x.x,因此取决于您上次运行npm install(没有参数) ,您在@angular/core中可能拥有的node_modules的实际版本可能是4.0.14.2.5等。

另一个例子是typescript。它可能会在package.json中显示为~2.3.0,就像2.3.x一样,您的实际版本可能是2.3.4

您可以通过运行npm ls来检查真正安装的软件包的版本,例如npm ls typescript将显示直接从typescript调用的所有package.json软件包版本,或者作为另一个包的依赖而来。

Angular/cli版本在您提供的package.json中非常具体,并设置为1.0.6

您还将拥有package.json的全局安装(不是特定于@angular/cli文件的npm ls -g @angular/cli文件)。您可以通过运行ng -v来检查其版本。

这非常接近ng -v@angular/cli告诉你的是:

  • 全球安装的@angular/cli
  • 版本是什么
  • 本地安装的node_modules版本(package.json中的版本,而不是0xcdcdcdcd中的特定范围)。
    如果您同时拥有这两者,这一点很重要,因为两者的不同版本可能会导致问题。
  • 您需要确保同步的其他Angular软件包的本地安装版本(不是范围)是什么

答案 1 :(得分:1)

您之前的package.json没有@angular/cli,如果您一般性地讨论其他软件包,则会有以下解释:4.2.4^说,拿一个4.0.0或更大的包,在做一个新的npm install时你会得到最新的版本。要在所有开发机器上坚持使用相同的版本(如果在团队中工作),我建议在package.json中提供确切的依赖关系,因为新版本可能会在全新安装中破坏代码。