• vue3.2的发布的release.js源码


    之所以会学习源码,主要是对他能运行这些命令的好奇。这篇源码是尤雨溪自己写的,主要的作用是发布vue。如果是我的话,我会用lerna来做管理,但是尤大是不会用这个的。

    const args = require('minimist')(process.argv.slice(2))
    const fs = require('fs')
    const path = require('path')
    const chalk = require('chalk')
    const semver = require('semver')
    const currentVersion = require('../package.json').version
    const { prompt } = require('enquirer')
    const execa = require('execa') 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    1.我们看到的是引入了minimist,这个是一个轻量级的命令行参数解析引擎。process.argv.slice(2)这个是node提供的原生的一个API,argv返回的是一个数组,数组的第一项是你node的安装文件夹,第二项是你的执行的文件的命令。他这句话的意思是截取从第二个开始直到结束你输入的命令。
    2.fs是一个node提供读取系统文件的API。
    3.path是node提供的解析路径的一个API。
    4.chalk 是一个给cmd文字赋上颜色的一个库。
    5.semver 用于版本的比较,提供了一系列的API给我们调用,提高开发的效率。
    6.currentVersion 从package.json里面读取当前的版本信息。
    7.enquirer是交互式询问用户输入,大家可能还记得js原生的API提供了prompt这样一个方法。
    8.execa执行你在终端输入的命令的一个库。

    上面一共引入了8个内库,有node提供的内置模块,也有外接模块。来共同实现效果。


    const preId =
      args.preid ||(semver.prerelease(currentVersion) && semver.prerelease(currentVersion)[0]) 
    
    • 1
    • 2

    args.preid的意思是说,当你输入yarn run release --preid=beta 的时候他就能获取到值。说明了args是一个对象。如果你没有这样输入,那么就取currentVersion,在currentVersion外面有一个semver.prerelease方法,这个方法主要是用来返回一个预发布组件的数组。如果存在就取第零项。

     const skipTests = args.skipTests
     const skipBuild = args.skipBuild 
    
    • 1
    • 2

    根据命名可以推测出,是跳过测试的。yarn run release --skipTests 他就会跳过对应的测试。

    根据命名可以推测出,是跳过打包的。yarn run release --skipBuild 他就会跳过打包的过程。

    const packages = fs.readdirSync(path.resolve(__dirname, '../packages')).filter(p => !p.endsWith('.ts') && !p.startsWith('.')) 
    
    • 1

    这个是同步读取了packages文件里面的文件,然后过滤掉不是以ts结尾和不是以.开头的文件。

    const skippedPackages = [] 
    
    • 1

    这个空的数组指的

  • 相关阅读:
    【ASM】字节码操作 工具类与常用类 AnalyzerAdapter 工作原理
    深入理解JVM虚拟机第三篇:JVM的指令集架构模型和JVM的生命周期
    Linux-Tomcat服务配置到系统服务
    计算机网络(上)
    3dmax常用操作快捷键复合操作法及解决快捷键冲突2021
    TiDB Lightning 简介
    运维自动化之域名系统
    计算机毕业设计Java中学生作文大赛管理平台(源码+系统+mysql数据库+lw文档)
    vue openlayers 加载高德地图等 gcj02 地址的图层偏移问题
    leetcode:135.分发糖果
  • 原文地址:https://blog.csdn.net/weixin_53312997/article/details/126439108