美文网首页
node 版本检查 小tip

node 版本检查 小tip

作者: 前端大飞 | 来源:发表于2017-05-07 23:17 被阅读0次
    1.我要讲啥

    一般一个框架或者一个package,都会有版本的概念,也就是会考虑到兼容性,对于新老特性的支持程度具有差异性。那么,问题来了,你的框架怎么给用户一个友好的提示呢,而不只是是“冷冷的”告诉你的用户,失败了,丢下一个抓耳挠腮的程序员。。。

    2.你要做啥

    node.js版本的检查,npm或者yarn版本(最近入的新坑,从npm跳入到yarn)的检查。检查到后呢,友好的提示啊!!!
            直接上代码

    var chalk = require('chalk')
    var semver = require('semver')
    var packageConfig = require('../package.json')
    var shell = require('shelljs')
    

    不要急,慢慢来。这个过程,需要用到chalk,semver,shell,三个npm package。这三个干嘛用的呢,简单提一句,chalk,用于美化你的命令行log,semver用户操作版本version的简单工具包,shell,则是命令行执行的node包。欲知详情,npm搜一下,自行科普吧。
      好了,该干正事了,三步走策略。
      1. 检查是否安装

    shell.which('npm'); // 检查命令行是否存在npm命令,也就是是否在环境变量中
    

    2. 检查版本

    /**
     * 执行bin命令
    /*
    function exec (cmd) {
      return require('child_process').execSync(cmd).toString().trim()
    }
    exec('npm --version');
    semver.satisfies(mod.currentVersion, mod.versionRequirement);// 其中currentVersion是当前检测到的版本号,versionRequirement是package.json中声明的版本号。
    

    3. 错误提示

    if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
          warnings.push(mod.name + ': ' +
            chalk.red(mod.currentVersion) + ' should be ' +
            chalk.green(mod.versionRequirement)
          )
        }
    if (warnings.length) {
        console.log('')
        console.log(chalk.yellow('To use this template, you must update following to modules:'))
        console.log()
        for (var i = 0; i < warnings.length; i++) {
          var warning = warnings[i]
          console.log('  ' + warning)
        }
        console.log()
        process.exit(1)
      }
    }
    

    上述就是简单的版本检查的全部流程,小僧也只是从vue-cli的webpack框架中学习了一二,分享给大家。

    相关文章

      网友评论

          本文标题:node 版本检查 小tip

          本文链接:https://www.haomeiwen.com/subject/ojhjtxtx.html