最近想要自己实现一个 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 中安装依赖相关推荐

  1. 20220910最新版Redis7源码编译及windows中安装

    20220910最新版Redis7源码编译及windows中安装 文章目录 20220910最新版Redis7源码编译及windows中安装 1.Cygwin安装 1 Cygwin介绍 ...is i ...

  2. Vue源码分析--Vue.component

    Vue源码分析–Vue.component 我将非 Vue.component 的部分去掉了 export function initAssetRegisters (Vue: GlobalAPI) { ...

  3. lodash源码分析之compact中的遍历

    小时候, 乡愁是一枚小小的邮票, 我在这头, 母亲在那头. 长大后,乡愁是一张窄窄的船票, 我在这头, 新娘在那头. 后来啊, 乡愁是一方矮矮的坟墓, 我在外头, 母亲在里头. 而现在, 乡愁是一湾浅 ...

  4. apollo源码分析 感知_Kitty中的动态线程池支持Nacos,Apollo多配置中心了

    目录 回顾昨日 nacos 集成 Spring Cloud Alibaba 方式 Nacos Spring Boot 方式 Apollo 集成 自研配置中心对接 无配置中心对接 实现源码分析 兼容 A ...

  5. 「源码分析」CopyOnWriteArrayList 中的隐藏知识,你Get了吗?

    前言 本觉 CopyOnWriteArrayList 过于简单,寻思看名字就能知道内部的实现逻辑,所以没有写这篇文章的想法,最近又仔细看了下 CopyOnWriteArrayList 的源码实现,大体 ...

  6. lodash源码分析之baseFindIndex中的运算符优先级

    我悟出权力本来就是不讲理的--蟑螂就是海米:也悟出要造反,内心必须强大到足以承受任何后果才行. --北岛<城门开> 本文为读 lodash 源码的第十篇,后续文章会更新到这个仓库中,欢迎 ...

  7. [pig4cloud框架源码分析] 03 - MyBatis中的sql语句日志打印

    文章目录 导读 pig4cloud框架配置 Mybatis Log Plugin 插件开启方式 插件说明 [TODO]源码分析 拦截器方案实现sql日志查看 参考资料 导读 使用MyBatis开发过程 ...

  8. UGUI源码分析:LayoutGroup中的纵横布局组件(HorizontalOrVerticalLayoutGroup)

    系列 UGUI源码分析系列总览 相关前置: UGUI CanvasUpdateSystem源码分析 UGUI源码分析:LayoutSystem布局系统 文章目录 系列 UML图一览 LayoutGro ...

  9. 【VUE】源码分析 - vue中的 HTMLParser,模板解析的第一步

      tip:本系列博客的代码部分(示例等除外),均出自vue源码内容,版本为2.6.14.但是为了增加易读性,会对不相关内容做选择性省略.如果大家想了解完整的源码,建议自行从官方下载. GitHub ...

  10. mysql源码安装分析_MySQL源码分析(0):编译安装及调试(转)

    编译安装 为了实现MySQL的更高级别的性能调优,我们通常需要理解其内部实现机制,并对其进行优化调试.在下面的系列中,我们会分别介绍MySQL的部分内部实现机制. 首先我们介绍如何从源代码部署一台My ...

最新文章

  1. 设计模式入门:建造者模式
  2. 图灵八月书讯 ——技术图书嘉年华
  3. 计算机专业毕业生人数稳居前十,你该怎么脱颖而出?
  4. ObservableCollection和List的区别总结
  5. Microbit扩展编写
  6. 【运营】盘点2014,有哪些O2O名牌被撕。
  7. nyoj-491--幸运三角形--简单深搜枚举(TLE)
  8. TEG六周年 | 同心筑梦 共赢未来
  9. [高等数学]高数个人复习笔记
  10. C语言,利用一维数组选择法排序,使学生成绩高低排序(要求输入为负值时输入结束)
  11. archlinux grub启动无win7_CentOS Linux操作系统各种启动和服务管理
  12. 简便方法搭建Harbor镜像仓库
  13. 【Opencv卸载与重装】NVIDIA Xavier NX下,卸载opencv3,重装opencv4
  14. 光纤交换机分为哪几种 光纤交换机连接图
  15. 新的GSMA报告强调“智联万物”在全球的作用
  16. opencv通过dll调用matlab函数,图片作为参数
  17. Matplotlib保存图片到文件
  18. PHP程序员需要注意的代码规范PSR有哪些?
  19. Python笔记之用turtle库绘制三角函数和反三角函数的图像(考研党福利)
  20. 如何在微信里使用计算机,怎么用电脑上微信?教你用电脑如何玩转微信

热门文章

  1. FreeImage加速保存图像
  2. Day 08 周六下午的活动
  3. matlab pca 测试样本,matlab_PCA,训练集与测试集分开,原理和用法
  4. mySql中The user specified as a definer ('root'@'%') does not exist
  5. vb 变量赋值为当前选定单元格_VBA变量5年踩坑吐血精华总结
  6. git checkout .的用法
  7. C++ 标准库中的异常
  8. java电话号码输入_使用可选字母前缀屏蔽输入到电话号码格式
  9. oracle数据库赋权_oracle数据库用户之间授权
  10. python两个乘号_Python小白入门:第一讲||变量和简单数据类型