如何仅使用npm获取当前软件包的版本

时间:2018-12-05 17:17:51

标签: node.js npm

如何使用npm从package.json获取当前版本?

我知道npm version将输出我软件包的版本以及npm和其他依赖项。但是我需要一个简短的命令来仅获取我的软件包版本以在CI上使用。因此理想情况下,无需额外输入,因为CI不知道它要处理的项目是什么。

npm version from-git --allow-same-version也可以,如果它没有尝试在Git上标记新版本的话。

5 个答案:

答案 0 :(得分:4)

使用 npm:

npm -s run env echo '$npm_package_version'

答案 1 :(得分:2)

没有直接的npm命令仅显示您的软件包版本,但是您可以在项目文件夹中使用此技巧:

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

如果要使用npm命令,可以将其包装到package.json文件中的“脚本”中:

"scripts": {
    "version": "node -e "console.log(require('./package.json').version);"
}

现在您可以启动npm run version来获取软件包的版本

答案 2 :(得分:2)

要建立在Kaz的答案上,这个要短一些。

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

答案 3 :(得分:0)

如果使用grepsed对您来说不是问题,那么这对我来说非常有用:

VERSION_NUMBER=$(npm version | grep @ | sed -re "s/\{ '.*': '(.*)',?/\1/g")

说明:

  • npm version为您提供所有信息
  • grep @抓住了您拥有版本的位置
  • sed -re "s/\{ '.*': '(.*)',?/\1/g"仅用版本号替换文本

答案 4 :(得分:0)

如果您的项目由 git 支持并且您让 npm version 标记您的构建,那么您可能可以利用 git describe

echo The current build is \"`git describe`\". 
==> The current build is "v0.0.2".

这不是技术上使用 npm 来获取版本,但这是我在尝试找到基于“真实”npm 的解决方案并找到此 SO 后最终使用的这清楚地表明没有一个好的 clean 命令可用。