Skip to content
Go back

脚手架运行原理

Published:  at  08:25 PM

文章目录

脚手架

脚手架的本质是一个操作系统的客户端,通过命令执行

问题


脚手架的核心价值

提升前端研发效能

  1. 自动化:项目重复代码的拷贝/git操作/发布上线操作
  2. 标准化:项目创建/git flow/发布流程/回滚流程
  3. 数据化:研发过程系统化、数据化,使得研发过程可量化

与自动化构建工具的区别

jenkins、travis等自动化工具已经比较成熟,是否需要自研脚手架


从使用角度理解脚手架

vue create vue-test-app
# - 主命令 vue
# - command:create
# - command的参数:vue-test-app

vue create vue-test-app --force -r https://regisetry.npm.taobao.org

--force 叫做option,用来辅助脚手架确认在特定场景下用户的选择(可以理解为配置)。
-r 也叫做option,与--force的区别在于使用-,使用简写,-r也可以替换为--registry



脚手架原理解析

全局安装@vue/cli时发生了啥

  1. npm在进行全局安装vue-cli
  2. 在vue-cli的package.json中查看bin字段
  3. bin中如果有指令,会在node安装目录的bin文件夹中添加vue的软链接
// package.json
{
    "name": "@vue/cli",
    ...
    "bin": {
        "vue": "bin/vue.js"  // 终端中vue主命令从这里来的
    }
}

npm安装vue作为全局依赖的时候,为vue在bin目录中创建了软链接,并指向当前使用的node版本安装路径的lib/node_modules目录中vue-cli中的vue.js

执行vue命令,会查到vue-cli的js文件,但是为什么会被node执行呢

#!/usr/bin/env node
// 上面这行会让操作系统在环境变量中寻找node,nvm可以切换node,也就是修改了环境变量中的PATH

console.log("hello world~")

如何在命令行创建自定义命令

# 先进入node的bin目录
cd ~/.nvm/versions/node/v16.13.1/bin

# 创建软链接
ln -s ~/attacki/source/_posts/backend/nodejs/cli/test.js attr

# 为命令添加别名,软连接是可以嵌套的
ln -s ./attr attr2

# 删除软链接
rm -rf attr attr2

脚手架之所以是客户端,因为node是客户端

脚手架的执行原理

脚手架开发流程

脚手架开发难点解析

vue create
vue add
vue invoke
vue command [options] <params>

node根据路径执行文件

node -e "require('../cli/index.js')"


Previous Post
强大的正则表达式
Next Post
glob用法