背景:webpack构建打包时会检查node.js和npm的版本是否达到要求,这其中会用到semver和child_process,chalk是颜色插件,可以改变输出的颜色。
中间件
http-proxy-middleware:用于把请求代理转发到其他服务器的中间件。https://www.jianshu.com/p/a248b146c55a
Semver
Semver是一个专门分析Semantic Version(语义化版本)的工具,“semver”其实就是这两个单词的缩写。Npm使用了该工具来处理版本相关的工作。
// 计较两个版本号的大小
semver.gt(‘1.2.3’, ‘2.3.4’) // false
semver.lt(‘1.2.3’, ‘2.3.4’) // true
// 验证版本号是否合法,返回null即不合法
semver.valid(‘1.2.3’) // ‘1.2.3’
semver.valid(‘a.b.c’) // null
// 提取版本号
semver.clean(’ =v1.2.3 ') // ‘1.2.3’
semver.major(‘1.2.3’) // ‘1’
semver.minor(‘1.2.3’) // ‘2’
semver.patch(‘1.2.3’) // ‘3’
child_process
1.子进程的运行结果存储在系统缓存之中(最大200Kb)
2.等到子进程运行结束之后,主进程再用回调函数读取子进程的运行结果
chalk
chalk是颜色插件,可以改变输出的颜色,用法如下:
const chalk= require('chalk');
console.log(chalk.red('this is red!'));
函数入参带有方括号的含义
参考:函数传参 中括号含义
对于buf.write这个方法:
buf.write(string[, offset[, length]][, encoding])
第一个参数string是必须的,他表示你要写入的内容;往后的offset、length、encoding这些参数都是非必须的。这些参数你可以不传(用[]括起来表示不传),但并不表示这三个参数你想怎么传就怎么传的,这里是有规则的,规则从这里中括号的对应关系中可以看出来。我们来看他的对应关系:[, offset[, length]] && [ encoding]。这表示offset、length和encoding你可以传或者不传,但是你要是没有传offset的话那length是一定不能传的,这就是为什么length要放在offset的括号里面的原因。
所以整个例子理解起来就是:
string必须传,offset、length、encoding可传可不传,但是offset不传的话length也不能传。