有没有方法在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
有没有方法在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
当前回答
一个安全的选项是添加一个npm脚本,该脚本生成一个单独的版本文件:
"scripts": {
"build": "yarn version:output && blitz build",
"version:output": "echo 'export const Version = { version: \"'$npm_package_version.$(date +%s)'\" }' > version.js"
}
这将输出包含以下内容的version.js:
export const Version = { version: "1.0.1.1622225484" }
其他回答
或者在普通的旧壳中:
$ node -e "console.log(require('./package.json').version);"
这可以缩短为
$ node -p "require('./package.json').version"
我发现的最精简的方法:
const { version } = JSON.parse(fs.readFileSync('./package.json'))
如果您想获取目标包的版本。
import { version } from 'TARGET_PACKAGE/package.json';
例子:
import { version } from 'react/package.json';
如果您的应用程序是使用npm start启动的,您只需使用:
process.env.npm_package_version
有关详细信息,请参阅package.json vars。
有两种检索版本的方法:
需要package.json并获取版本:
const { version } = require('./package.json');
使用环境变量:
const version = process.env.npm_package_version;
请不要使用JSON.parse、fs.readFile和fs.readFileSync,也不要使用其他npm模块,这不是这个问题所必需的。