【问题标题】:Can my node.js program get the npm version number?我的 node.js 程序可以获取 npm 版本号吗?
【发布时间】:2017-01-12 22:13:14
【问题描述】:

我有一个使用版本号的 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')
})

【问题讨论】:

标签: html node.js npm version


【解决方案1】:

你可以执行shell命令npm version,它会给你

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

然后只需读取 nameOfYourService 的值,并将其作为变量传递以呈现视图(在 html 的情况下)或仅在 server.js 中使用它

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

【讨论】:

  • 谢谢,我发现它是重复的,并且从另一个问题中选择的答案非常容易实现。
【解决方案2】:

这是一个两步问题:

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 文件中您想要的版本中插入 &lt;%= version %&gt;
  4. 修改server.js,使其看起来像这样:

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 })
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-06
    • 2014-09-04
    • 1970-01-01
    • 2022-08-11
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多