zhangdizhangdi

脚手架

概念

bash
$ echo $PATH
$ env
  • 环境变量(相当于操作系统级别的全局变量)
  • 软链接(相当于 windows 系统的快捷方式)

执行过程

npm 为例,安装在 全局 的指令:

  1. 在终端输入 npm run build
  2. 终端在环境变量中找到 npm 命令
bash
$ which npm
$ /usr/local/bin/npm
  1. 终端根据 npm 命令链接到实际文件 /usr/local/lib/node_modules/npm/bin/npm-cli.js
bash
$ cd /usr/local/bin
$ ll
$ lrwxr-xr-x    ...    npm@ -> ../lib/node_modules/npm/bin/npm-cli.js
  1. 终端利用 node 执行 npm-cli.js

文件内容:

js
#!/usr/bin/env node
require('../lib/cli.js')(process)
  1. 解析 command / options
  2. 执行 command
  3. 执行完毕

安装过程

  1. /usr/local/lib/node_modules中安装 npm
  2. 安装完成后会解析包中的 package.json 文件,检测文件中是否配置了 bin 属性
  3. package.json 中包含了 bin 属性,则会在/usr/local/bin目录下用 bin 中声明的 key 创建一个全局指令,并链接到 bin 中声明的 value
json
//npm package.json
"bin": {
  "npm": "bin/npm-cli.js",
  "npx": "bin/npx-cli.js"
},

开发


ansi escape code 命令行渲染标准







  • egg - 中文官网
  • ejs - 官网