node 版本检查 小tip

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框架中学习了一二,分享给大家。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,123评论 25 709
  • YarnYarn产生背景:Yarn直接来自于MR1.0MR1.0 问题:采用的是master slave结构,ma...
    时待吾阅读 11,190评论 2 23
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,084评论 19 139
  • 为什么眼里含泪 心里 却着了火 嘴上起了泡 舌头像引信 仿佛一点就着 不想吃 也不想喝 调和一点蜂蜜 煮点绿豆和...
    阿莲0609阅读 1,891评论 9 9
  • 当岁月的沙痕覆盖了来路 我在星空下寻觅 那指引脚步的北斗 可曾发出微微的叹息 当四季的烟云翻滚而过 我的指尖碰触着...
    东山明月阅读 1,486评论 0 1

友情链接更多精彩内容