How to find the version of an installed node.js/npm package?
This prints the version of npm itself:
npm -v <package-name>
This prints a cryptic error:
npm version <package-name>
This prints the package version on the registry (i.e. the latest version available):
npm view <package-name> version
How do I get the installed version?
npm list
for local packages or npm list -g
for globally installed packages.
The result should look like (package@version):
├─┬ cli-color@0.1.6
│ └── es5-ext@0.7.1
├── coffee-script@1.3.3
├── less@1.3.0
├─┬ sentry@0.1.2
│ ├── file@0.2.1
│ └── underscore@1.3.3
└── uglify-js@1.2.6
Edit: As @juanpaco pointed out it is now possible to directly display the version of one package if you know the name of the package.
For example: npm list grunt
will result in:
projectName@projectVersion /path/to/project/folder
└── grunt@0.4.1
Another quick way of finding out what packages are installed locally and without their dependencies is to use:
npm list --depth=0
Which gives you something like
├── bower@0.8.6
├── grunt@0.4.1
├── grunt-bower-requirejs@0.4.3
├── grunt-contrib-clean@0.4.1
├── grunt-contrib-coffee@0.7.0
├── grunt-contrib-copy@0.4.1
├── grunt-contrib-imagemin@0.1.4
├── grunt-contrib-jshint@0.1.1
├── grunt-contrib-livereload@0.1.2
├── grunt-contrib-requirejs@0.4.1
├── grunt-regarde@0.1.1
└── grunt-svgmin@0.1.0
Obviously, the same can be done globally with npm list -g --depth=0
.
This method is clearer in case you have installed a lot of packages.
npm view <package> version
- returns the latest available version on the package.
npm list --depth=0
- returns versions of all installed modules without dependencies.
npm list
- returns versions of all modules and dependencies.
And lastly to get node version: node -v
npm info YOUR_PACKAGE version
e.g.
npm info grunt version
0.4.5
Just a by the way, sometimes some bleeding edge versions of Node won't work in certain environments. That's when Node Version Manager - nvm comes in handy. It enables one not only to check the current version but also install several versions and toggle versions according to your needs.
It saved my day a couple of times already!
If you agree to install jq, you can use the JSON output of npm list
.
npm -j ls <package-name> | jq -r .version
or, if you want to be verbose
npm --json list <package-name> | jq --raw-output '.version'
For instance:
$ npm -j ls ghost | jq -r .version
0.4.2
Also, the JSON format is slightly different for global packages, so you'll need to change the query.
For instance:
$ npm -j -g ls | jq -r .dependencies.ghost.version
0.4.2
use npm {{pkg name}} -v this is the easy way to extract package version