vue-cli 2.x项目模板文件说明(十)webpack下check-versions.js篇

本文介绍的是vue-cli2.x项目中,webpack下check-versions.js文件各条命令含义
项目结构参照vue-cli 2.x项目模板文件说明(一)整体结构篇

'use strict'
const chalk = require('chalk') // 引入chalk(chalk:修改控制台中字符串的样式(字体样式加粗等/字体颜色/背景颜色))
const semver = require('semver') // 引入semver semver是语义化版本控制模块
const packageConfig = require('../package.json')
const shell = require('shelljs') // 引入shell

function exec (cmd) {
  return require('child_process').execSync(cmd).toString().trim() // 返回cmd命令执行结果
}

const versionRequirements = [
  {
    name: 'node',
    currentVersion: semver.clean(process.version), // 返回一个版本信息,主要是转化为规定格式
    versionRequirement: packageConfig.engines.node // pacgage.json 中 engines选项中记录的node版本信息
  }
]

if (shell.which('npm')) {
  versionRequirements.push({
    name: 'npm',
    currentVersion: exec('npm --version'), // 直接返回npm版本信息
    versionRequirement: packageConfig.engines.npm // 这里跟上面node的那部分是一样的
  })
}

module.exports = function () {
  const warnings = []

  for (let i = 0; i < versionRequirements.length; i++) {
    const mod = versionRequirements[i]
   // 如果版本信息不对的话,执行下面命令,红色当前版本,绿色正确版本
    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 (let i = 0; i < warnings.length; i++) {
      const warning = warnings[i]
      console.log('  ' + warning)
    }

    console.log()
    process.exit(1) // 强制终止进程
  }
}

semver :语义化版本控制模块 详细信息查看官网,或者是这里
shell: 可以直接调用node的一些API,来完成本来应该通过命令行完成的事儿
child_process.execSync: 产生一个shell客户端,然后使用shell来执行程序,当完成的时候传递给回调函数一个stdout和stderr

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值