当前位置: 首页 > Web前端 > HTML

VUE3.0源码scripts-dev.js文件只有20行代码,你熟悉吗?

时间:2023-03-28 16:55:25 HTML

文件路径: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*rollup-wc--environmentTARGET:[target],FORMATS:umd"**-wc:-w和-c的组合,-c使用配置文件rollup.config.js打包js,-w观察源文件变化,自动重新打包**–environment:设置传给的环境变量文件,可以在JS文件中,通过process.env*读取,这里设置:process.env.COMMIT、process.env.TARGET等变量**/execa('rollup',['-wc','-环境',[`COMMIT:${commit}`,`TARGET:${target}`,`FORMATS:${formats||'全球'}`,sourceMap?`SOURCE_MAP:true`:``]/***filter(Boolean)去除所有“false”类型的元素,Boolean是一个函数*consta=[1,2,"b",0,{},"",NaN,3,undefined,null,5];*A。过滤器(布尔值);//[1,2,"b",{},3,5]*/.filter(Boolean).join(',')],{/***stdio选项用于配置父进程和子进程之间建立的管道*默认情况下,子进程的stdin、stdout和stderr是重定向到相应的ChildProcess对象的subprocess.stdin、subprocess.stdout、subprocess.stderr流。*相当于options.stdio=['inherit','inherit','inherit']*/stdio:'inherit'})如果你对“前端源码”情有独钟,可以扫一扫微信二维码下方二维码,内容持续更新中!目前VUE3.0源码正在分析中,欢迎加入!