Skip to content

Instantly share code, notes, and snippets.

@yvele
Last active April 27, 2024 04:19
Show Gist options
  • Save yvele/e98e3a155335a6e00e71 to your computer and use it in GitHub Desktop.
Save yvele/e98e3a155335a6e00e71 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' \
| tr -d '[[:space:]]')
echo $PACKAGE_VERSION
@dezren39
Copy link

dezren39 commented Jul 5, 2020

I combined all the examples here but also elsewhere into one big page, no idea what is best, but if it's useful to someone:

https://gist.github.com/dezren39/d71e381a3c70ce8463a9471cd2983617

# these can all be npm scripts, but anything can be an npm script

# a
echo $(cat ./package.json | grep version | head -1 | awk -F: '{ print $2 }' | sed 's/[",]//g' | tr -d '[[:space:]]')
# b
echo $(cat ./package.json | grep version | head -1 | awk -F= "{ print $2 }" | sed -E 's/(version)|[:,\",]//g' | tr -d '[[:space:]]')

# c
echo $(node --eval="process.stdout.write(require('./package.json').version)")

# d
node -pe "require('./package.json').version"

# e
jq -r .version ./package.json

# f
npm run version --silent # add version run-script to scripts: ' "version": "echo $npm_package_version" ' # also could access $npm_package_version any other way

# g not clean
npm version

# if published package, to check published package
# h
npm view . version
# i
npm show . version

# j
awk -F\" '/"version":/ {print $4}' package.json
# k
npx -c 'echo "$npm_package_version"'
# l
perl -ne 'print "$1\n" if /"version":\s*"(.*?)"/' package.json
# m
awk '/version/{gsub(/("|",)/,"",$2);print $2}' package.json
# n
sed -nr 's/^\s*\"version": "([0-9]{1,}\.[0-9]{1,}.*)",$/\1/p' package.json

#---

# npm package example, others exist

npm i -g json

# o (requires "npm i -g json")
json version -a < package.json

# p (requires "npm i -g json")
json dependencies -a < package.json | grep : | sed 's/^ *//;s/"//g;s/: /@/;s/,$//'
# q (requires "npm i -g json")
json dependencies -a < package.json | grep : | sed 's/[",]//g;s/: /@/;s/,$//'

# r (requires "npm i -g json")
json devDependencies -a < package.json | grep : | sed 's/^ *//;s/"//g;s/: /@/;s/,$//'

# s (requires "npm i -g json")
json devDependencies -a < package.json | grep : | sed 's/[",]//g;s/: /@/;s/,$//'

#---

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