vue-cli腳手架build目錄中check-versions.js的配置


轉載自:https://www.cnblogs.com/ye-hcj/p/7074363.html

本文介紹vue-cli腳手架build目錄中check-versions.js的配置

  1. 本文件是用來檢測node和npm版本的
  2. 直接上代碼加注釋

  

// 下面的插件是chalk插件,他的作用是在控制台中輸出不同的顏色的字,大致這樣用chalk.blue('Hello world'),這款插件只能改變命令行中的字體顏色
var
chalk = require('chalk')
// 下面這個是semver插件,是用來對特定的版本號做判斷的,
比如 // semver.gt('1.2.3','9.8.7') false 1.2.3版本比9.8.7版本低
// semver.satisfies('1.2.3','1.x || >=2.5.0 || 5.0.0 - 7.2.3') true 1.2.3的版本符合后面的規則
var semver = require('semver')
// 下面是導入package.json文件,要使用里面的engines選項,要注意require是直接可以導入json文件的,並且requrie返回的就是json對象
var packageConfig = require('../package.json')
// 下面這個插件是shelljs,作用是用來執行Unix系統命令
var shell = require('shelljs')
// 下面涉及了很多Unix命令,這里可能解釋的不夠詳細,第一時間精力有限,第二能力有限。。。
function exec (cmd) {
//腳本可以通過 child_process 模塊新建子進程,從而執行 Unix 系統命令
//下面這段代碼實際就是把cmd這個參數傳遞的值轉化成前后沒有空格的字符串,也就是版本號
//https://nodejs.org/api/child_process.html這是nodejs的子進程教程
//require('child_process') node的模塊,execSync(cmd)創建同步進程
return require('child_process').execSync(cmd).toString().trim() } var versionRequirements = [ { name: 'node',// node版本的信息 currentVersion: semver.clean(process.version),// 使用semver插件吧版本信息轉化成規定格式,也就是 ' =v1.2.3 ' -> '1.2.3' 這種功能 versionRequirement: packageConfig.engines.node// 這是規定的pakage.json中engines選項的node版本信息 "node":">= 4.0.0" }, ] /*shell.which('npm')  返回:C:\PROGRAM FILES\NODEJS\NPM.CMD 返回絕對路徑,否則返回null*/ if (shell.which('npm')) { versionRequirements.push({ name: 'npm', currentVersion: exec('npm --version'),  // 自動調用npm --version命令,並且把參數返回給exec函數,從而獲取純凈的版本號 versionRequirement: packageConfig.engines.npm // 這是規定的pakage.json中engines選項的node版本信息 "npm": ">= 3.0.0" }) } module.exports = function () { var warnings = [] for (var i = 0; i < versionRequirements.length; i++) { var mod = versionRequirements[i] if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
  //上面這個判斷就是如果版本號不符合package.json文件中指定的版本號,就執行下面的代碼 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)
// 提示用戶更新版本,具體不解釋了,應該能看懂 } }

11


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM