文件路径:VUE3.0源码scripts/dev.js当我们在命令行输入yarndev或npmrundev时,会通过根目录下package.json文件中的scripts配置信息找到scripts/dev.js,并开始执行这个文件你做了什么?相关代码我都做了注释,大家慢慢看:constexeca=require('execa')//模糊匹配命令行输入的模块名是否和packages目录下的模块名一致const{fuzzyMatchTarget}=require('./utils')/***解析参数options*process.argv.slice(2)对应执行命令参数位置(即第3个起始位,相当于"-x3-y4-n5在下面的例子中-abc--beep=boopfoobarbaz"这部分数据)例子如下:*nodeexample/parse.js-x3-y4-n5-abc--beep=boopfoobarbaz*args结果是:{*_:['foo','bar','baz'],*x:3,*y:4,*n:5,*a:true,*b:true,*c:true,*beep:'boop'*}*/constargs=require('minimist')(process.argv.slice(2))//获取命令行参数输入的模块名,默认值:vueconsttarget=args._.length?fuzzyMatchTarget(args._)[0]:'vue'//获取'esm-bundler,cjs'等命令行参数中输入的formats参数多个值可以用逗号分隔constformats=args.formats||参数。f//获取命令行参数中输入的sourceMap参数constsourceMap=args.sourcemap||args.s/***gitrev-parseHEAD-->获取最新的commitid(例如:0996f0ac76188c324831f19089bdd87b9c364cb6)*commitvalue是commitid的前7位*commit=*.slice(0,7)='0996f0a'*/constcommit=execa.sync('git',['rev-parse','HEAD']).stdout.slice(0,7)/***execa*第一个参数:字符串类型类似于cmd运行脚本时输入的命令*第二个参数:string[]第一个参数绑定的命令的相关属性信息*第三个参数:execa.Options
