cli

54 阅读2分钟

概念

echo /etc/shells cat /etc/shells 查看当前操作系统支持的命令行shell

bash shell 可以理解为脚手架的运行环境,用来执行程序的,不像其他脚手架 cdls(文件管理)等来执行特定任务的

脚手架

vue create demo --force -r xxxxxx 这个命令可以分为几个部分来看

  1. 主命令:vue
    • 可以通过which xxx指令,终端会在环境变了中找到xxx这个指令,返回指令所在的位置/Users/bytedance/.nvm/versions/node/v14.20.1/bin/vue
    • cd /Users/bytedance/.nvm/versions/node/v14.20.1,输入ls -l可查看bin目录和lib目录,lib内指向
  2. 子命令:command,具体能够使用的command可以根据 vue -h 或 vue --help 来查看
  3. command的param:demo
  4. option:例如 --force 等等,可以理解为脚手架的配置,一般会以---开头,option也会存在param,但是也可能省去了param脚手架已经给了默认值

cd /Users/bytedance/.nvm/versions/node/v14.20.1,输入ls -l可查看bin目录和lib目录

进入lib目录cd lib/node\_modules,里面存放的是node的全局依赖,所有通过npm i -g xxx 安装的包都会放在里面,再进入指定包内cd \@vue/cli看到的就是当前包(脚手架)的源码

进入cd lib/node_modules/@vue/cli文件内会有一个package.json中有一个bin属性配置的就是对应的指令(主命令\软连接)的名称以及执行的文件路径,例如安装vue-cli,执行的指令名是vue: "bin" : { "vue": "bin/vue.js" }

全局安装的包也可能会存在 usr/bin/xxx

进入bin目录cd bin,可以看到bin目录下有很多指令例如:vue,每一个指令都配置了软连接指向对应的地址,例如: ../lib/node_modules/@vue/cli/bin/vue.js,这样我们在执行vue指令,就会根据指令找到软连接的文件地址执行le1

全局安装了@vue/cli发生了什么?
  1. npm i -g @vue/cli 安装成功后
  2. /Users/bytedance/.nvm/versions/node/v14.20.1/lib/node_modules目录内添加@vue依赖包
  3. 然后再 /Users/bytedance/.nvm/versions/node/v14.20.1/bin 下添加依赖包的软连接
  4. 根据软连接找到文件位置执行代码,因为文件顶部添加#! usr/bin/env node 这行代码指定了到环境变了中找node这个命令,用node命令来执行js代码
  5. usr/bin/env 执行这个命令可以展示所有环境变量,usr/bin/env node xxx.js执行这个命令相当于用node xxx.js 来执行文件