有没有方法在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
当前回答
如果您的应用程序是使用npm start启动的,您只需使用:
process.env.npm_package_version
有关详细信息,请参阅package.json vars。
其他回答
以下是如何读取package.json的版本:
fs = require('fs')
json = JSON.parse(fs.readFileSync('package.json', 'utf8'))
version = json.version
编辑:哇,这个答案最初来自2012年!现在有几个更好的答案。可能最干净的是:
const { version } = require('./package.json');
我发现下面的代码片段最适合我。因为它使用require来加载package.json,所以无论当前的工作目录如何,它都能正常工作。
var pjson = require('./package.json');
console.log(pjson.version);
@病原体:
使用Browserify执行此操作会带来安全问题。注意不要将package.json暴露给客户端,因为这意味着所有的依赖版本号、构建和测试命令等都会发送给客户端。如果您在同一个项目中构建服务器和客户端,那么也会暴露服务器端版本号。攻击者可以使用这些特定数据来更好地适应服务器上的攻击。
如果您想获取目标包的版本。
import { version } from 'TARGET_PACKAGE/package.json';
例子:
import { version } from 'react/package.json';
或者在普通的旧壳中:
$ node -e "console.log(require('./package.json').version);"
这可以缩短为
$ node -p "require('./package.json').version"
我们可以通过两种方式从package.json中读取版本或其他密钥
1-使用require并导入所需的密钥,例如:
const version = require('./package.json')
2-使用文档中提到的package_vars
process.env.npm_package_version