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

当前回答

选项1

最佳实践是使用npm环境变量从package.json进行版本转换。

process.env.npm_package_version

更多信息:https://docs.npmjs.com/using-npm/config.html

只有当您使用NPM命令启动服务时,这才有效。

快速信息:您可以使用process.env.npm_package_[keyname]读取pacakge.json中的任何值

选项2

使用在环境变量中设置版本https://www.npmjs.com/package/dotenv作为.env文件,并将其作为process.env.version读取

其他回答

您可以使用项目版本包。

$ npm install --save project-version

Then

const version = require('project-version');

console.log(version);
//=>  '1.0.0'

它使用process.env.npm_package_version,但如果由于某种原因缺少env-var,则回退到package.json中编写的版本。

如果您的应用程序是使用npm start启动的,您只需使用:

process.env.npm_package_version

有关详细信息,请参阅package.json vars。

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

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

例子:

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

只是添加一个答案,因为我来到这个问题是为了找到在我的web应用程序中包含package.json版本的最佳方法。

我知道这个问题是针对Node.js的,但是,如果你使用Webpack捆绑你的应用程序,提醒你,推荐的方法是使用DefinePlugin在配置中声明一个全局版本并引用它。所以你可以在webpack.config.json中

const pkg = require('../../package.json');

...

plugins : [
    new webpack.DefinePlugin({
      AppVersion: JSON.stringify(pkg.version),
...

然后AppVersion现在是一个可供您使用的全局版本。还要确保在.eslintrc中通过globals属性忽略此项

const{version}=require(“./package.json”);console.log(版本);const v=require(“./package.json”).version;控制台日志(v);