脚手架实现原理
上节我们遗留了3个问题,接下来慢慢解答
- 为什么全局安装
@vue/cli
后会添加的命令为vue
- 全局安装
@vue/cli
时发生了什么 - 执行
vue
命令时发生了什么,为什么vue
指向一个js文件,我们却可以直接通过vue
命令去执行它
1. 为什么全局安装@vue/cli
后会添加的命令为vue
which vue #查看vue的实际文件路径
/Users/cuijianjun/.nvm/versions/node/v14.6.0/bin/vue
然后中间有软连接
/Users/cuijianjun/.nvm/versions/node/v14.6.0/lib/node_modules/@vue/cli/bin #实际真正执行的文件
- 在相同目录下有package.json
cat package.json
- 决定名称是这里
vue
2. 全局安装@vue/cli
时发生了什么
- 下载依赖到全局lib/node_nodules
- 配置bin的软链接
3. 执行vue
命令时发生了什么,为什么vue
指向一个js文件,我们却可以直接通过vue
命令去执行它
- 操作系统会根据
which vue
的路径,找到可执行的文件(换个说法就是看看vue这个命令在环境变量中,有没有被注册) #!/usr/bin/env node
,文件里面有对应的node解释器,所以可以直接调用执行
扩展:有同学会问下面两种写法区别
#!/usr/bin/env node
#!/usr/bin/node
- 第一种是在环境变量中查找
node
- 第二种是直接执行
/usr/bin/
目录下的node
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。