zoukankan      html  css  js  c++  java
  • build 文件夹中的 check-versions.js

     1 //此文件是检查node+npm的版本 在build.js里面使用
     2 'use strict'
     3 const chalk = require('chalk') //导入chalk模块 用来改变字体颜色
     4 const semver = require('semver') //导入semver即语义化版本 用来控制版本
     5 const packageConfig = require('../package.json') //导入package.json,用于获取项目需要node+npm的版本
     6 const shell = require('shelljs') //导入shelljs模块 用来执行unix命令
     7 
     8 //封装方法 用来获取纯净的版本号
     9 //child_process是node用来创建子进程 execSync是创建同步进程
    10 function exec(cmd) {
    11   return require('child_process').execSync(cmd).toString().trim()
    12 }
    13 
    14 //node版本信息
    15 const versionRequirements = [{
    16   name: 'node', //名称是Node
    17   currentVersion: semver.clean(process.version), //当前的node版本号
    18   versionRequirement: packageConfig.engines.node //要求的node版本号
    19 }]
    20 
    21 if (shell.which('npm')) {
    22   // 将npm添加到versionRequirements
    23   versionRequirements.push({
    24     name: 'npm', //名称是npm
    25     currentVersion: exec('npm --version'), //纯净的当前npm版本号
    26     versionRequirement: packageConfig.engines.npm //要求的npm版本号
    27   })
    28 }
    29 
    30 module.exports = function () {
    31   const warnings = []
    32 
    33   for (let i = 0; i < versionRequirements.length; i++) {
    34     const mod = versionRequirements[i]
    35 
    36     // 如果当前版本号不符合要求的版本号,那么就将提示信息添加到wranings
    37     if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
    38       warnings.push(mod.name + ': ' +
    39         chalk.red(mod.currentVersion) + ' should be ' +
    40         chalk.green(mod.versionRequirement)
    41       )
    42     }
    43   }
    44 
    45   // 如果有 warnings 那么就打印出来
    46   if (warnings.length) {
    47     console.log('')
    48     console.log(chalk.yellow('To use this template, you must update following to modules:'))
    49     console.log()
    50 
    51     for (let i = 0; i < warnings.length; i++) {
    52       const warning = warnings[i]
    53       console.log('  ' + warning)
    54     }
    55 
    56     console.log()
    57 
    58     //执行失败
    59     process.exit(1)
    60   }
    61 }
  • 相关阅读:
    ccmenu里的位置
    【luogu P3346】诸神眷顾的幻想乡(广义 SAM)
    Snow的追寻(线段树)(LCA)
    【bzoj 4303】数列 / T4(K-D tree)
    选课 / T3(组合数)(容斥)
    随机游走 / T1(期望)(树形DP)
    【luogu P3898】期望异或 / T3 / 大新闻(数位DP)(数学)
    【luogu P7295】Paint by Letters P(前缀和)(欧拉公式)(bfs)(对偶图)
    【luogu P7294】Minimum Cost Paths P(二分)(单调栈)(斜率)
    【luogu P7293】Sum of Distances P(线段树)(图论)
  • 原文地址:https://www.cnblogs.com/zhuyujie/p/14074600.html
Copyright © 2011-2022 走看看