有没有办法从nodejs代码中的package.json获取版本?

Node.js

理查德飞云

2020-03-16

有没有办法package.json在nodejs应用中设置版本我想要这样的东西

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

第1764篇《有没有办法从nodejs代码中的package.json获取版本?》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

3个回答
Jim小小 2020.03.16

选项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

小哥小卤蛋 2020.03.16

对于那些希望在服务器端也可以使用的安全客户端解决方案的人来说,可以使用genversion这是一个命令行工具,可从最近的package.json中读取版本,并生成可导入的CommonJS模块文件,以导出该版本。免责声明:我是维护者。

$ genversion lib/version.js

我承认客户端安全不是OP的主要意图,但是正如Mark Wallaceaug的回答所讨论的那样,它与客户的需求高度相关,也是我找到此问答的原因。

神乐米亚 2020.03.16

如果您的应用是使用“ npm start”启动的,则可以简单地使用:

process.env.npm_package_version

有关更多详细信息,请参见package.json vars

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android