脚手架执行原理
什么是脚手架
脚手架严格意义上是一个运行在操作系统上的客户端,依赖node.js运行时环境
为什么要有脚手架
脚手架主要的意义是进行开发提效
拿前端举例 项目创建 测试 回滚 发布等一系列流程都可以通过脚手架完成大大提升了开发效率
- 脚手架可以做项目初始化
- 用脚手架维护通用组件库
- 用脚手架实现自动构建 打包 发布 CDN静态资源映射等一系列流程
- 等等脚手架是研发中台必不可少的一环
脚手架的执行原理
此处用@vue/cli举例
vue create demo -f -r "http://xxxx"
脚手架是运行在操作系统上的客户端,或者说node.js是运行在操作系统上的客户端 vue.js是它的参数
vue是主命令 create是子命令 demo是options 这就是一条完整脚手架命令的构成
首先主命令vue 是由操作系统解析,
操作系统会通过环境变量找到[vue]这个可执行文件
- mac系统这条命令对应一个在bin目录下的软连接,这条软连接指向lib目录下的vue.js文件
- windows系统这条命令对应npm文件下的vue.cmd文件
查看脚手架运行目录的命令
mac:which vue
windows:where vue
windows下找到vue.cmd操作系统会直接运行,使用node启动其指向的vue.js文件,执行node vue.js [command][options],vue.js会解析command和options完成后续过程
等价于
node .\node_modules\@vue\cli\bin\vue.js create demo -f
mac系统下找到vue软连接,直接执行vue.js文件,vue.js文件不是可执行文件,所以需要在js文件中声明
#!/usr/bin/env node
/usr/bin/env 可以打印所有环境变量,意思为环境变量中查找node,并且用node运行vue.js文件
- 这是一条完整脚手架命令的执行过程
vue.cmd 或 vue 软连接是在哪里定义的怎么生成的?
在脚手架开发时可以在package.json中定义
"bin":{
"vue":"bin/vue.js"
}
- 也可以通过手动更改 .cmd文件或软连接嵌套更改
- npm安装包后会解析package.json 文件如果发现存在bin字段那么会自动生成其对应的软连接