有没有方法在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
当前回答
以下是如何读取package.json的版本:
fs = require('fs')
json = JSON.parse(fs.readFileSync('package.json', 'utf8'))
version = json.version
编辑:哇,这个答案最初来自2012年!现在有几个更好的答案。可能最干净的是:
const { version } = require('./package.json');
其他回答
还有另一种方法可以从package.json文件中获取某些信息,即使用pkginfo模块。
此模块的使用非常简单。您可以使用以下方法获取所有包变量:
require('pkginfo')(module);
或仅某些细节(本例中的版本)
require('pkginfo')(module, 'version');
并且您的包变量将设置为module.exports(因此可以通过module.exports.version访问版本号)。
您可以使用以下代码段:
require('pkginfo')(module, 'version');
console.log "Express server listening on port %d in %s mode %s", app.address().port, app.settings.env, module.exports.version
这个模块有非常好的功能-它可以在项目中的任何文件中使用(例如在子文件夹中),它将自动从package.json中获取信息。因此,您不必担心package.jsn在哪里。
我希望这会有所帮助。
要确定节点代码中的包版本,可以使用以下命令:
const version=require('./package.json').version;对于<ES6版本从“”导入{版本}/package.json';对于ES6版本const版本=process.env.npm_package_version;如果应用程序已使用npmstart启动,则所有npm*环境变量都可用。您还可以使用以下npm包:root require、pkginfo、项目版本。
如果您想获取目标包的版本。
import { version } from 'TARGET_PACKAGE/package.json';
例子:
import { version } from 'react/package.json';
我正在使用create-react应用程序,在执行react应用程序时,我没有process.env.npm_package_version可用。
我不想在我的客户端代码中引用package.json(因为向客户端暴露了危险的信息,比如包版本),也不想安装另一个依赖项(genversion)。
我发现我可以通过在package.json中使用$npm_package_version来引用package.jsn中的版本:
"scripts": {
"my_build_script": "REACT_APP_VERSION=$npm_package_version react-scripts start"
}
现在,版本始终遵循package.json中的版本。
选项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读取