224

npm update seems to just update the packages in dependencies, but what about devDependencies.

Right now you can install devDependencies by running npm install ., but this doesn't work for npm update .

Any ideas?

4
  • 1
    I just ran into the same thing. I'm surprised at this asymmetry between npm install and npm update. I worked around it by deleting my node_modules directory and then running npm install again, but it sure seems like there should be a better way. Commented Apr 14, 2012 at 2:01
  • 7
    I opened a bug report for this behavior. We'll see what happens. Commented Apr 14, 2012 at 12:21
  • This may be because the NPM devs thought that people would use npm link for doing dev environments. Commented Jul 2, 2012 at 10:58
  • Does this answer your question? How to update each dependency in package.json to the latest version? Commented Feb 24, 2022 at 12:34

12 Answers 12

188

To update package.json in addition to the local modules, run

npm update --save-dev 

Alternatively, the same command to save time

npm update -D 

You can view the full detail of update, or any command for that matter through

npm help <cmd> 
Sign up to request clarification or add additional context in comments.

6 Comments

npm update -D did not work for me, it didn't update anything.
Why is this marked as the correct answer when the question is not how to save updates to package.json but rather how to make npm update to update devDependencies?
@onalbi: it does not. Here's the thread tracking the issue.
npm update --save-dev works just fine for me. Using node v12.11.0 and npm v6.11.3
Nothing from the stated is working! (Downvoting).
|
76

Install npm-check-updates, then jump into your project folder and run:

npm-check-updates 

And to update and save changes to the devDependencies (with the --dep param) in your package.json file:

npm-check-updates -u --dep dev 

6 Comments

ncu would be better than npm-check-updates to save typing.
@DimitriKopriwa there's a -d option for devDependencies only
ncu --dep dev -u; npm install
This may update vue dependencies to a higher version than the latest version that vue-cli supports.
@MichaelThompson the -d flag is (now) short-hand for the --doctor param. Correct param is --dep dev.
|
22

These steps worked for me :

  1. npm install -g npm-check-updates
  2. ncu -u
  3. npm update
  4. npm install

5 Comments

Why we have to use third party thing for this kind of work? So weird. I could not make npm update change package.json
3. is probably not needed, you can skip it.
step 4. is obviated by step 3. The response from @Daniel Danielecki does a better job of explaining what each of these steps actually does. stackoverflow.com/a/68375286/413538
This updates to the very latest version, ignoring all semantic rules like ^. ~. Is there any options to update following semantic rules?
15
  1. npm outdated - for an overview what's outdated
  2. npm install -g npm-check-updates - as pointed correctly by Michael
  3. ncu -u - it'll automatically update all dependencies (also dependencies, i.e., it's of course different than devDependencies) versions in package.json, without reinstalling it yet. It'll just change the "numbers" in package.json
  4. npm update - actual dependencies installation
  5. (Optional, depending by scenario) you might need to use the flag --force, or (new in NPM v7) --legacy-peer-deps to complete the process. You can read about difference between those 2 on What does npm install --legacy-peer-deps do exactly? When is it recommended / What's a potential use case?
  6. (Optional) you can validate it using ncu -u and for correctly updated dependencies you should see the text All dependencies match the latest package versions :)

2 Comments

This worked for me flawlessly
The main reason for this question is devDependencies only (otherwise the answer is just npm update). The flag required for that is --dep dev. Nice explanation for what each of the steps do though :)
5

This problem does no longer excise with the current version of NPM (1.3.11).

Update works fine with: npm update

1 Comment

Unfortunately, it does not. Here's the thread tracking the issue.
4

If you are using outdated npm version it might be the problem. So before any other commands execute:

sudo npm install npm -g 

or (if above doesn't work):

sudo npm update npm -g 

Then relaunch the console (in order for changes to take effect). Now you can check your new npm --version and if it is up to date execute:

npm update 

or (if you prefer):

npm update --save-dev 

1 Comment

Unfortunately, this doesn't work in npm 5. Here's the thread tracking the issue.
2

I ran into the same problem as OP had, and found no solution, so I decided to write a Grunt plugin that will auto-update my devDependencies..

It's on Github, I'd love to get some input and collaborations in order to make it the best tool that NPM hasn't provided.

Basically it will auto-update your outdated development dependencies with a simple Grunt Task.

https://github.com/pgilad/grunt-dev-update

Comments

2

What worked for me is installing individual dev dependencies like this

npm install [email protected] --save --only=dev 

1 Comment

npm install package-name@version --save-dev -> only="dev" is not correct
2

i found the answer onhttps://nodejs.dev/learn/update-all-the-nodejs-dependencies-to-their-latest-version and this is working for me for all the major release as well

npm install -g npm-check-updates ncu -u npm update 

to check the outdated package use

npm outdated 

Comments

1

One (slow) way to do force the update, is to remove the node_modules directory, and then do npm install again.

This was a known bug of the npm update command, which has been fixed on the development branch of npm, see here: https://github.com/isaacs/npm/pull/3863

It should land on the latest stable version of npm pretty soon.

2 Comments

In case of npm > v5 you would also need to remove package-lock.json to make this work, otherwise it will just install the versions listed in that lock file.
Also, this won't update package.json for you. Here's the thread tracking the issue.
0

Alternatively, get out of your IDE. go to the terminal itself for the computer and run the command you want and let it install its dependencies. Worked in my case. I think having an IDE issue could also bring out such issues.

Comments

0

Below below steps worked for me

  1. ncu -u 
  2. npm ls @types/react 

    For dependency tree issues use this command, otherwise skip this

    Note - replace @types/react with the package you are having issue with dependencies. Resolve all dependency issues with this command in iteration

  3. npm update 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.