Search code examples
angularangular-materialangular-animationsangular-libraryangular13

Angular 13 dependencies


I recently (month ago) update the angular of my project to version 13.2.2, a few problems but could make it work and run, making deploys. The last Thursday I start having a problem with ng build, saying that one of my libraries (made for the project) needed a superior version of angular core because it used angular animations in version 13.3.0. So I don't have this version install not in my project, not in my libraries both have core and animation in version 13.2.2. My question is why when angular team release a new version (13.3.0)(last Thursday) my project automatically ask for that version to make a build. I didn´t change any version or did a npm install. How can I make my project stop looking for the core 13.3.0.

Error in my library when do npm list

npm ERR! peer dep missing: @angular/core@13.3.0, required by @angular/animations@13.3.0

Error when deploying the project

npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR! 
npm ERR! While resolving: MY_PROJECT@0.8.8
npm ERR! Found: @angular/core@13.2.7
npm ERR! node_modules/@angular/core
npm ERR!   @angular/core@"~13.2.2" from the root project
npm ERR!   peer @angular/core@"~13.2.2" from @MYLIBRARY@0.5.3
npm ERR!   node_modules/@MYLIBRARY
npm ERR!     @MYLIBRARY@"^0.5.3" from the root project
npm ERR! 
npm ERR! Could not resolve dependency:
npm ERR! peer @angular/core@"13.3.0" from @angular/animations@13.3.0
npm ERR! node_modules/@angular/animations
npm ERR!   @angular/animations@"^13.2.2" from the root project
npm ERR!   peer @angular/animations@"^13.2.2" from @MYLIBRARY@0.5.3
npm ERR!   node_modules/@MYLIBRARY
npm ERR!     @MYLIBRARY@"^0.5.3" from the root project

package my library:

  "peerDependencies": {
    "@angular/common": "~13.2.2",
    "@angular/core": "~13.2.2",
    "@angular/animations": "^13.2.2",
    "@angular/cdk": "~13.2.2",
    "@angular/material": "^13.2.2"
  },
  "dependencies": {
    "tslib": "^2.3.1"
  }

package of my project:

 "@angular/animations": "^13.2.2",
 "@angular/cdk": "^13.2.2",
 "@angular/common": "~13.2.2",
 "@angular/compiler": "~13.2.2",
 "@angular/core": "~13.2.2",

Meanwhile, I delete node_modules and package-lock.json in both project and libraries to see if it fix, but didn't. Now I can see that in package-lock.json mentions angular 13.3.0. But why if I didn't do any updates.


Solution

  • Pls see this node js documentation. There is a pretty well explanation for your problem.

    https://nodejs.dev/learn/the-package-lock-json-file

    In package.json you can set which versions you want to upgrade to (patch or minor), using the semver notation, for example:

    • if you write ~0.13.0, you want to only update patch releases: 0.13.1 is ok, but 0.14.0 is not.
    • if you write ^0.13.0, you want to get updates that do not change the leftmost non-zero number: 0.13.1, 0.13.2 and so on.
    • If you write ^1.13.0, you will get patch and minor releases: 1.13.1, 1.14.0 and so on up to 2.0.0 but not 2.0.0.
    • if you write 0.13.0, that is the exact version that will be used, always

    Change your package.json as below of you want the exact version,

     "@angular/animations": "13.2.2",
     "@angular/cdk": "13.2.2",
     "@angular/common": "13.2.2",
     "@angular/compiler": "13.2.2",
     "@angular/core": "13.2.2",