zoukankan      html  css  js  c++  java
  • 从 npmjs 服务器检查版本是否有更新,如果有更新则提示更新

    从 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`)
    
  • 相关阅读:
    .net 网站登录
    .net controller 跳转到 controller
    c# 访问Mysql
    C#去除字符串的最后一个字符
    try catch
    MySqlDataReader
    转:十六进制颜色与RGB颜色对照表
    js:Razor视图下服务器代码给Javascript变量赋值
    .netMVC:Web页面向后台提交数据的方式和选择
    jquery方法
  • 原文地址:https://www.cnblogs.com/daysme/p/14087070.html
Copyright © 2011-2022 走看看