有没有方法在nodejs应用程序中获取package.json中设置的版本?我想要这样的东西

var port = process.env.PORT || 3000
app.listen port
console.log "Express server listening on port %d in %s mode %s", app.address().port, app.settings.env, app.VERSION

当前回答

或者在普通的旧壳中:

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

这可以缩短为

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

其他回答

我正在使用gitlab ci,并希望自动使用不同的版本来标记我的docker图像并推送它们。现在,它们的默认docker图像不包含节点,所以我的版本仅在shell中执行此操作

scripts/getCurrentVersion.sh

BASEDIR=$(dirname $0)
cat $BASEDIR/../package.json | grep '"version"' | head -n 1 | awk '{print $2}' | sed 's/"//g; s/,//g'

现在,它的作用是

打印您的包json搜索带有“版本”的行只取第一个结果替换“和,

请注意,我的脚本位于存储库中具有相应名称的子文件夹中。因此,如果您不更改$BASEDIR//package.json到$BASEDIR/package.json

或者如果你想获得主要、次要和补丁版本,我会使用这个

scripts/getCurrentVersion.sh

VERSION_TYPE=$1
BASEDIR=$(dirname $0)
VERSION=$(cat $BASEDIR/../package.json | grep '"version"' | head -n 1 | awk '{print $2}' | sed 's/"//g; s/,//g')

if [ $VERSION_TYPE = "major" ]; then
  echo $(echo $VERSION | awk -F "." '{print $1}' )
elif [ $VERSION_TYPE = "minor" ]; then
  echo $(echo $VERSION | awk -F "." '{print $1"."$2}' )
else
  echo $VERSION
fi

如果您的版本是1.2.3,则采用这种方式。您的输出将如下所示

$ > sh ./getCurrentVersion.sh major
1

$> sh ./getCurrentVersion.sh minor
1.2

$> sh ./getCurrentVersion.sh
1.2.3

现在,您需要确保的唯一一件事是,您的包版本将是package.json中第一次使用密钥,否则您将得到错误的版本

我使用查找同步来执行此操作:

var findup = require('findup-sync');
var packagejson = require(findup('package.json'));
console.log(packagejson.version); // => '0.0.1' 

如果您想获取目标包的版本。

import { version } from 'TARGET_PACKAGE/package.json';

例子:

import { version } from 'react/package.json';

将package.json文件导入server.js或app.js,然后将packaage.json财产访问到服务器文件中。

var package = require('./package.json');

package变量包含package.json中的所有数据。

用于以下web组件的版本:

const { version } = require('../package.json')

class Widget extends HTMLElement {

  constructor() {
    super()
    this.attachShadow({ mode: 'open' })
  }

  public connectedCallback(): void {
    this.renderWidget()
  }

  public renderWidget = (): void => {
    this.shadowRoot?.appendChild(this.setPageTemplate())
    this.setAttribute('version', version)
  }
}