首页 > Web开发 > 详细

从 npmjs 服务器检查版本是否有更新,如果有更新则提示更新

时间:2020-12-04 19:05:05      阅读:50      评论:0      收藏:0      [点我收藏+]

从 npmjs 检查依赖版本

  • 如果要通过命令行查看, 可以通过 npm view mockm versions 的形式

本文通过 npmjs api 以编程方式获取到服务器上的版本, 再与本地版本进行比较以提示更新.

优先以 node 自身的 request 查询方式进行查询, 如果不存在, 再查询全局.

可直接使用的源码:
这段代码来自一款很好用的前后端接口联调工具 mockm:

/**
* 从 npmjs 检查依赖版本
* @param {*} name 要检查更新的依赖名称
* @param {object} param1 参数
* @param {string} param1.version 指定版本
* @param {array} param1.packagePath 指定路径
*/
async function checkUpdate(name, {version, packagePath} = {}) {
  function hasFile(filePath) { // 判断文件或目录是否存在
    const fs = require(`fs`)
    return fs.existsSync(filePath)
  }
  function getLocalVersion(name) { // 从本地获取版本号
    packagePath = packagePath || require.main.paths.concat(`${require(`path`).parse(process.execPath).dir}/node_modules`) // 全局安装目录
      .find(path => hasFile(`${path}/${name}/package.json`))
    console.log(`packagePath`, packagePath)
    if(packagePath) {
      return require(`${packagePath}/${name}/package.json`).version // 从 package 中获取版本
    }
  }
  function getServerVersion(name) { // 从 npmjs 中获取版本号
    return new Promise((resolve, reject) => {
      const https = require(‘https‘);
      https.get(`https://registry.npmjs.org/${name}`, res => {
          let data = ‘‘
          res.on(‘data‘, chunk => {
            data += chunk
          })
          res.on(‘end‘, () => {
            const latest = (JSON.parse(data)[`dist-tags`] || {}).latest // 获取最新版本
            resolve(latest)
          })
      }).on(`error`, (err) => {
        throw new Error(err.message)
      })
    })
  }
  const getLocalVersionRes = version || getLocalVersion(name)
  const getServerVersionRes = await getServerVersion(name)
  if(getLocalVersionRes !== getServerVersionRes) {
    console.log(`${name} 已发布新版本 ${getServerVersionRes}, 你当前版本为 ${getLocalVersionRes}`)
  }
}
// 使用示例:
checkUpdate(`mockm`)
?

从 npmjs 服务器检查版本是否有更新,如果有更新则提示更新

原文:https://www.cnblogs.com/daysme/p/14087070.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!