-
Star
(349)
You must be signed in to star a gist -
Fork
(41)
You must be signed in to fork a gist
-
-
Save DarrenN/8c6a5b969481725a4413 to your computer and use it in GitHub Desktop.
| # 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 |
Here is how I get the lockfile version in my bash script...
lockfile_version="$(node -pe "require(\"$directory/package-lock.json\").lockfileVersion" )"node --print 'require("./package.json").version'sed -n 's/.*"version": *"\([^"]*\)".*/\1/p' package.jsonnode --eval 'process.stdout.write(require("./package.json").version)'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.mdsrc/version.js
export const version = "0.1.0";README.md
# Example
```js
import * as example from "[email protected]";
```
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 minorWhich will set them all to 0.2.0 of course.
This worked for me
cat package.json | grep \"version\" | cut -d'"' -f 4
node -p -e "require('./package.json').version"
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
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)grep "version" package.json | ...grep directly instead of cat?
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)
If you already have node installed: node -p "require('./package.json').version"
Since no one has mentioned it yet, I'll throw my solution into the ring:
It's rather unfortunate the that the
npm pkg getcommand is almost usable but I'd rather not have to pipe totrto remove the double quotes.