有没有方法在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
当前回答
要确定节点代码中的包版本,可以使用以下命令:
const version=require('./package.json').version;对于<ES6版本从“”导入{版本}/package.json';对于ES6版本const版本=process.env.npm_package_version;如果应用程序已使用npmstart启动,则所有npm*环境变量都可用。您还可以使用以下npm包:root require、pkginfo、项目版本。
其他回答
如果您的应用程序是使用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模块,这不是这个问题所必需的。
NPM内衬:
从npm v7.20.0开始:
npm pkg获取版本
在npm v7.20.0之前:
npm-s运行env echo“$npm_package_version”
注意,这两种方法的输出略有不同:前者输出用引号括起来的版本号(即“1.0.0”),后者不输出(即1.0.0)。
在Unix中删除引号的一个解决方案是使用xargs
npm pkg get version | xargs echo
我发现下面的代码片段最适合我。因为它使用require来加载package.json,所以无论当前的工作目录如何,它都能正常工作。
var pjson = require('./package.json');
console.log(pjson.version);
@病原体:
使用Browserify执行此操作会带来安全问题。注意不要将package.json暴露给客户端,因为这意味着所有的依赖版本号、构建和测试命令等都会发送给客户端。如果您在同一个项目中构建服务器和客户端,那么也会暴露服务器端版本号。攻击者可以使用这些特定数据来更好地适应服务器上的攻击。
将package.json文件导入server.js或app.js,然后将packaage.json财产访问到服务器文件中。
var package = require('./package.json');
package变量包含package.json中的所有数据。