Skip to content

Instantly share code, notes, and snippets.

@DarrenN
Forked from yvele/get-npm-package-version.sh
Last active April 17, 2024 16:57
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
@justinmchase
Copy link

I just wanted to add an alternative solution I came up with: https://github.com/optum/semver-cli

This is a tool dedicated to getting/setting/incrementing semantic versions. It also has the ability to synchronize various code files as you increment which then makes it easier to access the version from code in different ways.

.github/version.yml

on:
  post:
    - kind: patch
      file: package.json
    - kind: regexp
      pattern: '(?<=export const version = ").*(?=";)'
      file: src/version.js
    - kind: regexp
      pattern: '(?<=example@).*(?=\/main.js)'
      file: README.md

src/version.js

export const version = "0.1.0";

README.md

# Example
```js
import * as example from "example@0.1.0";
```

package.json

{
  "version": "0.1.0"
}

VERSION

0.1.0

Then to get it from the shell:

VERSION=$(semver get)

To get it in code:

main.js

import { version } from "./src/version.js";
console.log(version);

And packagej.son, package-lock.json, src/version.js, README.md and the VERSION file are all in sync with each other and can be incremented simultaneously with the following command:

semver inc minor

Which will set them all to 0.2.0 of course.

@lakouu
Copy link

lakouu commented Dec 1, 2023

This worked for me
cat package.json | grep \"version\" | cut -d'"' -f 4

@HikaruChang
Copy link

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

@Ostico
Copy link

Ostico commented Apr 17, 2024

cat package.json | jq -r '.version' works on github actions

Easier:
jq -r .version package.json

real	0m0,021s
user	0m0,020s
sys	0m0,000s

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