有没有方法在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。
其他回答
要确定节点代码中的包版本,可以使用以下命令:
const version=require('./package.json').version;对于<ES6版本从“”导入{版本}/package.json';对于ES6版本const版本=process.env.npm_package_version;如果应用程序已使用npmstart启动,则所有npm*环境变量都可用。您还可以使用以下npm包:root require、pkginfo、项目版本。
只是添加一个答案,因为我来到这个问题是为了找到在我的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属性忽略此项
我知道这不是OP的意图,但我只是不得不这样做,所以希望这对下一个人有所帮助。
如果您在CI/CD过程中使用docker compose,您可以通过这种方式获得它!
version:
image: node:7-alpine
volumes:
- .:/usr/src/service/
working_dir: /usr/src/service/
command: ash -c "node -p \"require('./package.json').version.replace('\n', '')\""
对于图像,可以使用任何节点图像。我用阿尔卑斯山因为它是最小的。
以下是如何读取package.json的版本:
fs = require('fs')
json = JSON.parse(fs.readFileSync('package.json', 'utf8'))
version = json.version
编辑:哇,这个答案最初来自2012年!现在有几个更好的答案。可能最干净的是:
const { version } = require('./package.json');
您可以使用项目版本包。
$ 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中编写的版本。