有没有方法在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"

其他回答

有两种检索版本的方法:

需要package.json并获取版本:

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

使用环境变量:

const version = process.env.npm_package_version;

请不要使用JSON.parse、fs.readFile和fs.readFileSync,也不要使用其他npm模块,这不是这个问题所必需的。

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

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

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

要确定节点代码中的包版本,可以使用以下命令:

const version=require('./package.json').version;对于<ES6版本从“”导入{版本}/package.json';对于ES6版本const版本=process.env.npm_package_version;如果应用程序已使用npmstart启动,则所有npm*环境变量都可用。您还可以使用以下npm包:root require、pkginfo、项目版本。

为什么不使用require resolve。。。

const packageJson = path.dirname(require.resolve('package-name')) + '/package.json';
const { version } = require(packageJson);
console.log('version', version)

使用此方法,所有子路径都适用:)

我发现的最精简的方法:

const { version } = JSON.parse(fs.readFileSync('./package.json'))