ChatGPT解决这个技术问题 Extra ChatGPT

Find the version of an installed npm package

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?

On my installation, "npm -v " reports the version of npm, itself. To list the latest version of a package in the registry, I have found that "npm view version" gets the job done.
npm show shows the latest in npm, not installed
most of the time -v should work. However, this depends on whether or not the package developer(s) added cli functionality to their packages.

C
Cozy

npm list for local packages or npm list -g for globally installed packages.

You can find the version of a specific package by passing its name as an argument. For example, npm list grunt will result in:

projectName@projectVersion /path/to/project/folder
└── grunt@0.4.1

Alternatively, you can just run npm list without passing a package name as an argument to see the versions of all your packages:

├─┬ 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 

You can also add --depth=0 argument to list installed packages without their dependencies.


On mac and linux it's nice to add " | grep module_name", to filter the desired module version. Especially when running globally with -g. For example: "npm list -g | grep express" to get the installed express version.
If you want a specific module, you can run it like npm list less-middleware as an example.
Per @guya's tip for *nix based systems, on Windows you can use PowerShell for similar results: | select-string module_name to filter the module. Or, if you're using Git Bash (or just Bash, for that matter), you can use grep.
If you can't remember list, npm ls also works. In fact, many npm commands have aliases, and moreover, if you type a substring of a command, if this substring is unambiguous, it will work also; for instance npm ls, npm list, npm lis are all the same. If you want more verbose output, try npm ll (but probably you want --depth=0 added to it).
The output isn't the best for parsing with a script. Is there really not a way to get an output that is just the package version without having to do something like npm list -g | awk -F@ '/<package>/ { print $2}'
Z
Zoe stands with Ukraine

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 if you have installed a lot of packages.

To find out which packages need to be updated, you can use npm outdated -g --depth=0.


it's give me same as without the --depth
it seems they've fixed it in npm 1.4.6. See github.com/npm/npm/issues/4733
Works great with | grep <package_name>
@ygaradon Correct, but the --depth=0 makes it faster, because it does not have to recursively load dependencies
npm list -g --depth=0 for list modules installed globally
g
greuze

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 view version, goes to the npm remote registry, not local filesystem...
@AlexanderMills True, but having it here avoids another search for that. Btw, npm v, npm info and npm show are all alias of npm view.
along the same lines, npm view <package> versions will return all the versions for the package and not just the latest one.
D
David Beckwith
npm info YOUR_PACKAGE version

e.g.

npm info grunt version
0.4.5

This doesn't show the installed package version, it just shows the latest available version.
Agree with @tanner-semerad. I checked into Docs of npm to clearify it. npm info is alias for npm view and in Docs of npm you will find that standing: This command shows data about a package and prints it to the stream referenced by the outfd config, which defaults to stdout. [...] The default version is "latest" if unspecified. That's way I vote down.
Shows the latest version available, not latest installed. Downvoted.
npm info YOUR_PACKAGE version The only one that worked :)
No, as mentioned this will show the latest version on the registry. This "seems" to work if by chance your local dependency is on the latest version. But if it's not, you will not see the actual installed (older) version with this command.
F
Fergie

From the root of the package do:

node -p "require('./package.json').version"

EDIT: (so you need to cd into the module's home directory if you are not already there. If you have installed the module with npm install, then it will be under node_modules/<module_name>)

EDIT 2: updated as per answer from @jeff-dickey


Nice! Quite a bit faster than running "npm list" as the other answers suggest (~1s instead of ~20s) -- at least when you have this code snippet ready! (there should really be an npm plugin to do this...)
or node -p "require('./package.json').version"
This won't get the actual version installed if there is a range delimiter like ^ ~
I'd like to oppose @geedew 's comment. This answer suggests to be run in the root folder of the installed module. In the package.json of the installed module you will(!) find the actually installed version.
N
Nirav Vasoya

I just used

npm list | grep <package name>

and it worked great

On windows run:

npm list | find <package name>

In PowerShell run:

npm list | sls <package name>

find version doesn't work for me - even with quoted string, but powershell works well
For Windows users: npm list -g --depth=0 |find "<package name>" Note the double quotes
C
Cameron Tacklind

It's very simple.. Just type below line

npm view <package-name> version

Example

npm view redux version

I have version 7.2.0 of redux


It works 😍 This should have been the accepted answer NOW.
Beats me why "npm view < package-name > --version" is not accepted !
BEWARE: This is NOT showing the installed version. It shows the latest available version on npm.
As @FelixAlcala says, this does not show the version of the package that is installed, only latest available.
@KieranRyan because it's wrong. (See the comment from Felix and others.)
F
Farhan Yaseen

For local packages

npm list --depth=0

For Global packages

npm list  -g --depth=0

F
Farhan Yaseen

Combining some of the above answers and produces a super simple and super quick lookup.
Run from project root. No need to cd into any folder, just 1 line:

node -p "require('SOMEPACKAGE/package.json').version"


B
Benoit Blanchon

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

j
jaume

You can also check the version with this command:

npm info <package name> version


Again, it shows the latest version available in the package registry not the version of the currently installed package.
@DawidFerenczy Agree with its show only latest version like npm info httpaction
K
KundraLaci

If you are brave enough (and have node installed), you can always do something like:

echo "console.log(require('./package.json').version);" | node

This will print the version of the current package. You can also modify it to go insane, like this:

echo "eval('var result='+require('child_process').execSync('npm version',{encoding:'utf8'})); console.log(result.WHATEVER_PACKAGE_NAME);" | node

That will print the version of WHATEVER_PACKAGE_NAME package, that is seen by npm version.


node -e "console.log(require('./package.json').version);"
C
Charles Owen

I've seen some very creative answers, but you can just do this (for global packages add the --global switch):

npm ls package

Example:

npm ls babel-cli
`-- babel-cli@6.26.0

The npm documentation says that npm -ls

This command will print to stdout all the versions of packages that are installed, as well as their dependencies, in a tree-structure.

NPM documentation


'..as well as their dependencies, in a tree-structure' - beware of structure hell (:
D
DivideByZero

To see all the installed packages locally or globally, use these commands:

npm list for local packages or npm list -g for globally installed packages. npm list --depth=0 npm list | sls node -v


L
Lahiru Mirihagoda

To list local packages with the version number use:

npm ls --depth=0

To list global packages with the version number use:

npm ls -g --depth=0


M
Mahendra Pratap

npm list --depth 0 is the command which shows all libraries with version but you can use npm-check

npm-check is a good library to manage all those things regarding the version system event it will show libraries versions, new version update, and unused version and many more.

to install it just run

npm install -g npm-check

and simply run

npm-check

check the screenshot it is showing everything about the package version, new version update, and unused version.

https://i.stack.imgur.com/2PQZW.png

It works globally too. give it a try. Hope this help someone.


E
Eduardo Cuomo

Try with:

npm list --depth 1 --global packagename

R
Ran Yitzhaki

I've built a tool that does exactly that - qnm

qnm - A simple CLI utility for querying the node_modules directory.

Install it using:

npm i --global qnm

and run:

qnm [module]

for example:

> qnm lodash

lodash
├── 4.17.5
├─┬ cli-table2
│ └── 3.10.1
└─┬ karma
  └── 3.10.1

Which means we have lodash installed in the root of the node_modules and two other copies in the node_modules of cli-table2 and karma.

It's really fast, and has some nice features like tab completion and match search.


N
Nandhiny Durai

npm list package-name gives the currently installed version


S
Snow

You can see package.json to see installed packages version

To get the list on command line

npm ls

It will give you all installed packages in a project with their respective versions.

For particular package version

npm ls <package-name>

for eg

npm ls next

It will return version

-- next@10.1.3

This is the actual correct answer.
w
wjordan

Here's a portable Unix (using grep and sed) one-liner that returns the version string of a globally-installed npm package (remove the g from -pg to query local packages instead):

$ npm ll -pg --depth=0 grunt | grep -o "@.*:" | sed 's/.$//; s/^.//'
0.4.5

the npm ll outputs a parseable string formatted like: /usr/lib/node_modules/npm:npm@2.14.8:;

the grep command extracts the value between @ and :, inclusive;

the sed command removes the surrounding characters.


z
zumafra

This is simple question, and should have a simpler answer than what I see above.

To see the installed npm packages with their version, the command is npm ls --depth=0, which, by default, displays what is installed locally. To see the globally installed packages, add the -global argument: npm ls --depth=0 -global.

--depth=0 returns a list of installed packages without their dependencies, which is what you're wanting to do most of the time.

ls is the name of the command, and list is an alias for ls.


p
psergiocf

You can use npm view [module] version, npm info [module] version, npm show [module] version or npm v [module] version to check the version on an installed npm module.

Let's suppose my grunt module version is the 0.4.5:

npm view grunt version => 0.4.5
npm info grunt version => 0.4.5
npm show grunt version => 0.4.5
npm v grunt version    => 0.4.5

All of those show the newest available version, not the currently installed version
J
JGFMK

I added this to my .bashrc

function npmv {
    case $# in # number of arguments passed
    0) v="$(npm -v)" ; #store output from npm -v in variable
        echo "NPM version is: $v"; #can't use single quotes 
                                   #${v} would also work
    ;;   
    1) s="$(npm list --depth=0 $1 | grep $1 | cut -d @ -f 2)";
       echo "$s";
    ;;
    2) case "$2" in # second argument
        g) #global|#Syntax to compare bash string to literal
             s="$(npm list --depth=0 -g $1 | grep $1 | cut -d @ -f 2)";
        echo "$s";
        ;;
        l) #latest
             npm view $1 version; #npm info $1 version does same thing
       ;;
       *) echo 'Invalid arguments';
       ;;
       esac;
    ;;
    *) echo 'Invalid arguments';
    ;;
    esac;
}
export -f npmv

Now all I have to do is type:

npmv for the version of npm eg: NPM version is: 4.2.0

npmv for the local version eg: 0.8.08

npmv g for global version eg: 0.8.09

npmv l for latest version eg: 0.8.10

Note -d on cut command means delimit by, followed by @, then f means field the 2 means second field since there will be one either side of the @ symbol.


A
Aliaksei

You may try this: npm show {package} version shows the latest package version. And if your package is outdated, npm outdated will show it with version info.


The OP was asking about the version of the currently installed package, not the latest version available in the package registry.
A
Aymen Jarouih

If you'd like to check for a particular module installed globally, on *nix systems use:

npm list -g --depth=0 | grep <module_name>

1
1nstinct

I am using

npm list --depth=0 | grep module_name@

it brings me results like this

├── module_name@2.1033.0


A
Aakash

Access the package.json

You can access the package.json or bower.json of the package with:

notepad ./node_modules/:packageName/package.json

This will open the package.json in notepad which has the version number of the :packageName you included in the command.

For example :

notepad ./node_modules/vue-template-compiler/package.json

Good Luck.


Not only are there much easier ways to do this, the version you have specified in your package.json may not actually be the installed version due to semver range notations. That is, a dependency may be specified as version ^1.3.0, but that can mean anything from version 1.3.0 to 1.99.99
N
Nitin .

We can use npm view any-promise(your module name) -v


This shows the latest version available, not the version in the local directory.
@christianbundy you can use npm list --depth=0 | grep uuid
I had to use npm list --depth=0 | grep uuid | awk '{ print $2; }' | cut -d '@' -f 2, but yeah, this works as long as it's a top-level dependency. I don't think that's always the case though, based on the original question.
s
saltedlolly

To get ONLY the installed version number, try:

npm list -g --depth=0 packagename | grep packagename | cut -d'@' -f2

e.g. Installed version number of PM2:

npm list -g --depth=0 pm2 | grep pm2 | cut -d'@' -f2