我的node.js程序可以获取npm版本号吗?

时间:2016-09-05 14:03:00

标签: html node.js npm version

我有一个使用版本号的Node.js Web应用程序(当来自客户端的请求询问版本号时)。现在,当我更改我的版本时,我必须在三个地方更改它:

server.js

const version = 'v1.2.3'

package.json

"version": "1.2.3"

doc.html

<h1>version 1.2.3</h1>

有没有办法在一个地方编辑它并在其他地方使用它?

注意server.jsdoc.html的关联方式如下:

// in server.js, using express
app.get('/', function(req, res) {
  res.sendFile(__dirname + '/public/doc.html')
})

2 个答案:

答案 0 :(得分:2)

您可以执行shell命令npm version,它将为您提供

{ 
  nameOfYourService: '1.2.3',
  npm: '3.10.6',
  ares: '1.10.1-DEV'
  //etc
}

然后只读取nameOfYourService的值,并将其作为变量传递给渲染视图(如果是html)或只是在server.js

中使用它

在这种情况下,package.json是您保留版本号的唯一地方,应用程序的其余部分只是从那里读取。

答案 1 :(得分:0)

这是一个两步的问题:

1)将参数从package.json传递到server.js

server.js

const version = require('./package.json').version

2)将参数从server.js传递到doc.html

  1. 安装模板引擎。为了这个例子,我将采用ejs:npm install --save ejs
  2. 将您的doc.html重命名为views/doc.ejs
  3. 在您想要版本的HTML文件中插入<%= version %>
  4. 修改server.js,使其如下所示:
  5. server.js

    const version = require('./package.json').version
    
    //...
    
    app.set('views', './views')
    app.set('view engine', 'ejs')
    
    //...
    
    app.get('YOUR URI', function(req, res) {
      res.render('doc.ejs', { version: version })
    }