Skip to content

Instantly share code, notes, and snippets.

@DarrenN
Forked from yvele/get-npm-package-version.sh
Last active January 29, 2025 07:49
Show Gist options
  • Save DarrenN/8c6a5b969481725a4413 to your computer and use it in GitHub Desktop.
Save DarrenN/8c6a5b969481725a4413 to your computer and use it in GitHub Desktop.
Extract version from package.json (NPM) using bash / shell
# Version key/value should be on his own line
PACKAGE_VERSION=$(cat package.json \
| grep version \
| head -1 \
| awk -F: '{ print $2 }' \
| sed 's/[",]//g')
echo $PACKAGE_VERSION
@showmeyourhits
Copy link

If someone uses image based on ubi-minimal - which doesn't have jq, grep or even sed - use this script:

VERSION=$(cat package.json | tr -d '\n' | tr -d ' ' | cut -d'"' -f4)

@han911976
Copy link

han911976 commented Aug 8, 2024

grep "version" package.json | ...

grep directly instead of cat?

@getify
Copy link

getify commented Sep 6, 2024

Thanks for this thread, lots of creative workarounds and useful techniques to be learned here.

However, I think the best option, at least for the OP task, got largely overlooked here. npm show ./ version (as pointed out by @mightyiam among others).

BTW, the actual command AFAICT is npm-view, and there it says that npm has aliased v, show, and info to it.

WARNING: npm show . version and npm show ./ version are different. The . seems to pull from the published repository info (in cache?), where as the ./ actually reads the package.json in the current directory. The latter is the one we want here (at least the OP). So make sure you use npm show ./ version.

FWIW, I have added these two to my ~/.bash_profile:

alias whatver="npm v ./ version"
alias tagver="whatver | xargs git tag && git push --tags"

(I always forget how useful xargs is, until I run across a case like this where it's helpful)

@david-tennant-reaktor
Copy link

If you already have node installed: node -p "require('./package.json').version"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment