2

脚手架实现原理

上节我们遗留了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
  • image.png
  • 决定名称是这里 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

描述脚手架命令执行的全过程

image.png


Frank
21 声望0 粉丝

Good judgment comes from experience, and experience comes from bad judgment