Before you flag it as duplicate, I have searched for the similar questions and none of them helped me.
Currently this is what I have tried:
npm update
npm install
This would always allow me to install the latest (minor) version of the packages in node_modules, and update the package-lock.json file. However, the package.json file does not update.
For example, my moment is package.json is stated as "moment": "^2.27.0". After running above steps, package-lock.json will update to "moment": { "version": "2.29.1", ...} But package.json will still be "moment": "^2.27.0".
What is the correct way to do this? Running npm install moment
manually updates the package.json to become "moment": "^2.29.1" but its quite absurd if I have to run npm install for every single dependency?
Edit Thanks to the selected answer, I realised that I do not actually need to update my package.json, as it shows compatible version, not exact version.
package.json
will not updated by npm install
. That contains about dependencies and compatible version list.
"moment": "^2.27.0"
meaning allowed moment version: 2.27.0 <= version < 3.0.0
, not allowed moment version = 2.27.0
. So when you run npm install
, npm will install the latest version of major version 2
(In your case, 2.29.1
), But package.json
will not updated by that command. Because It not contains installed version
, It contains compatible version
.
However, npm install moment
command do install the latest version of moment
, So package.json
updated the latest version, because "^2.27.0"
is lower than "^2.29.1"
.
Anyway, If you want to update your package.json, You can use npm-check-updates
(a.k.a. ncu
). See this answer. If you not want running ncu
, You can use "latest"
(Example: "moment": "latest"
) to install the latest version anytime.