脚手架实现原理
上节咱们遗留了 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
形容脚手架命令执行的全过程