源码分析 vue-cli 中安装依赖
最近想要自己实现一个 cli
看了 vue-cli 源码中安装依赖的部分
源码文件 @vue/cli/lib/util/ProjectPackageManager.js 有一个 install 函数执行了 npm install 或者 yarn install
async install () {return await this.runCommand('install', this.needsPeerDepsFix ? ['--legacy-peer-deps'] : [])}
下面看一下 runCommand 函数:
async runCommand (command, args) {await this.setRegistryEnvs()return await executeCommand(this.bin,[...PACKAGE_MANAGER_CONFIG[this.bin][command],...(args || [])],this.context)}
runCommand 函数执行了 executeCommand 函数:
executeCommand 函数在:@vue/cli/lib/util/executeCommand.js
const execa = require("execa");
function executeCommand (command, args, cwd) {....const child = execa(command, args, {cwd,stdio: ['inherit', apiMode ? 'pipe' : 'inherit', !apiMode && command === 'yarn' ? 'pipe' : 'inherit']})...
}
使用了 execa 库,本质上是使用了child_process 创建了子进程去执行 install 安装依赖,并且把子进程的输出 inherit 到了父进程中。这样就实现了,虽然是在子进程中安装依赖,但是显示在命令行中。
源码分析 vue-cli 中安装依赖相关推荐
- 20220910最新版Redis7源码编译及windows中安装
20220910最新版Redis7源码编译及windows中安装 文章目录 20220910最新版Redis7源码编译及windows中安装 1.Cygwin安装 1 Cygwin介绍 ...is i ...
- Vue源码分析--Vue.component
Vue源码分析–Vue.component 我将非 Vue.component 的部分去掉了 export function initAssetRegisters (Vue: GlobalAPI) { ...
- lodash源码分析之compact中的遍历
小时候, 乡愁是一枚小小的邮票, 我在这头, 母亲在那头. 长大后,乡愁是一张窄窄的船票, 我在这头, 新娘在那头. 后来啊, 乡愁是一方矮矮的坟墓, 我在外头, 母亲在里头. 而现在, 乡愁是一湾浅 ...
- apollo源码分析 感知_Kitty中的动态线程池支持Nacos,Apollo多配置中心了
目录 回顾昨日 nacos 集成 Spring Cloud Alibaba 方式 Nacos Spring Boot 方式 Apollo 集成 自研配置中心对接 无配置中心对接 实现源码分析 兼容 A ...
- 「源码分析」CopyOnWriteArrayList 中的隐藏知识,你Get了吗?
前言 本觉 CopyOnWriteArrayList 过于简单,寻思看名字就能知道内部的实现逻辑,所以没有写这篇文章的想法,最近又仔细看了下 CopyOnWriteArrayList 的源码实现,大体 ...
- lodash源码分析之baseFindIndex中的运算符优先级
我悟出权力本来就是不讲理的--蟑螂就是海米:也悟出要造反,内心必须强大到足以承受任何后果才行. --北岛<城门开> 本文为读 lodash 源码的第十篇,后续文章会更新到这个仓库中,欢迎 ...
- [pig4cloud框架源码分析] 03 - MyBatis中的sql语句日志打印
文章目录 导读 pig4cloud框架配置 Mybatis Log Plugin 插件开启方式 插件说明 [TODO]源码分析 拦截器方案实现sql日志查看 参考资料 导读 使用MyBatis开发过程 ...
- UGUI源码分析:LayoutGroup中的纵横布局组件(HorizontalOrVerticalLayoutGroup)
系列 UGUI源码分析系列总览 相关前置: UGUI CanvasUpdateSystem源码分析 UGUI源码分析:LayoutSystem布局系统 文章目录 系列 UML图一览 LayoutGro ...
- 【VUE】源码分析 - vue中的 HTMLParser,模板解析的第一步
tip:本系列博客的代码部分(示例等除外),均出自vue源码内容,版本为2.6.14.但是为了增加易读性,会对不相关内容做选择性省略.如果大家想了解完整的源码,建议自行从官方下载. GitHub ...
- mysql源码安装分析_MySQL源码分析(0):编译安装及调试(转)
编译安装 为了实现MySQL的更高级别的性能调优,我们通常需要理解其内部实现机制,并对其进行优化调试.在下面的系列中,我们会分别介绍MySQL的部分内部实现机制. 首先我们介绍如何从源代码部署一台My ...
最新文章
- 设计模式入门:建造者模式
- 图灵八月书讯 ——技术图书嘉年华
- 计算机专业毕业生人数稳居前十,你该怎么脱颖而出?
- ObservableCollection和List的区别总结
- Microbit扩展编写
- 【运营】盘点2014,有哪些O2O名牌被撕。
- nyoj-491--幸运三角形--简单深搜枚举(TLE)
- TEG六周年 | 同心筑梦 共赢未来
- [高等数学]高数个人复习笔记
- C语言,利用一维数组选择法排序,使学生成绩高低排序(要求输入为负值时输入结束)
- archlinux grub启动无win7_CentOS Linux操作系统各种启动和服务管理
- 简便方法搭建Harbor镜像仓库
- 【Opencv卸载与重装】NVIDIA Xavier NX下,卸载opencv3,重装opencv4
- 光纤交换机分为哪几种 光纤交换机连接图
- 新的GSMA报告强调“智联万物”在全球的作用
- opencv通过dll调用matlab函数,图片作为参数
- Matplotlib保存图片到文件
- PHP程序员需要注意的代码规范PSR有哪些?
- Python笔记之用turtle库绘制三角函数和反三角函数的图像(考研党福利)
- 如何在微信里使用计算机,怎么用电脑上微信?教你用电脑如何玩转微信
热门文章
- FreeImage加速保存图像
- Day 08 周六下午的活动
- matlab pca 测试样本,matlab_PCA,训练集与测试集分开,原理和用法
- mySql中The user specified as a definer ('root'@'%') does not exist
- vb 变量赋值为当前选定单元格_VBA变量5年踩坑吐血精华总结
- git checkout .的用法
- C++ 标准库中的异常
- java电话号码输入_使用可选字母前缀屏蔽输入到电话号码格式
- oracle数据库赋权_oracle数据库用户之间授权
- python两个乘号_Python小白入门:第一讲||变量和简单数据类型