写在前面其实最开始不是特意来研究 vue-cli 的源码,只是想了解下 node 的命令,如果想要了解 node 命令的话,那么绕不开 tj 写的 commander.js。在学习 commander.js 过程中发现 vue-cli 的交互方式挺炫酷的,然后就去看了下源码,所以就有了这篇文章。链接vue-cli 3.0 源码分析目录@vue/cli前言介绍开始环境介绍常见 npm 包vue createcreate 入口整体分析基础验证获取预设选项(preset)依赖安装(installDeps)Generator结尾分析总结vue addadd 入口安装插件调用插件总结vue invokeinvoke 命令vue inspectinspect 命令vue serveserve 命令vue buildbuild 命令vue uiui 入口整体分析server 端client 端总结vue initinit 入口@vue/cli-init 分析vue-cli 2.x init 分析generate 函数分析总结vue configconfig 命令vue upgradeupgrade 命令vue infoinfo 命令@vue/cli-service整体介绍入口new Service()service.run()内置插件servebuildinspecthelp总结vue-cli-analysis 整个项目可大致分为两个部分,一部分是 vue 命令分析,包含 create,add,invoke, ui 等等,另一部分就是 vue-cli-service 的分析。通过分析发现与 2.X 相比,3.0 变化太大了,通过引入插件系统,可以让开发者利用其暴露的 API 对项目进行扩展。在分析之前对插件机制不是很了解,不知道如何实现的,分析之后逐渐了解了其实现机制,而且对于 vue 项目的配置也更加熟悉了。除此之外,在分析过程过程中还了解了很多有意思的 npm 包,比如 execa, debug, lowdb,lodash,inquirer 等等,最后,如果你想学习 node 命令或者想写一些比较有意思的命令行工具的话,阅读 vue-cli 源码是一个不错的选择。