# 脚手架

# 脚手架核心价值

将研发过程:

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

# vue 脚手架执行原理

  • 在终端输入vue create test
  • 终端解析出vue命令
  • 终端在环境变量中找到vue命令
  • 终端根据vue命令链接到实际文件vue.js
  • 终端利用 node 执行vue.js
  • vue.js解析 command/options
  • vue.js执行 command
  • 执行完毕,退出执行

# 脚手架开发流程

  • 创建npm项目
  • 创建脚手架入口文件,最上方添加:
    #!/usr/bin/env node
    
  • 配置package.json,添加bin属性
  • 编写脚手架代码
  • 将脚手架发布到npm

# Lerna 简介

Lerna (opens new window)是一个优化基于 git+npm 的多 package 项目的管理工具。

# 优势

  • 大幅减少重复操作
  • 提升操作的标准化

# Lerna 开发脚手架流程

  • 脚手架项目初始化
    • 初始化 npm 项目 >>> 安装 lerna >>> 初始化项目 lerna init
  • 创建 package
    • 创建 package lerna create >>> 安装依赖 lerna add >>> 链接依赖 lerna link
  • 脚手架开发和测试
    • 执行 shell 脚本 lerna exec >>> 执行 npm 命令 lerna run >>> 清空依赖 lerna clean >>> 重装依赖 lerna bootstrap
  • 脚手架发布上线
    • lerna version >>> 查看上版本依赖的所有变更 lerna changed >>> 查看 diff lerna diff >>> 项目发布 lerna publish
  • 链接本地脚手架

    cd cli-dir
    npm link
    
  • 链接本地库文件

    cd lib-dir
    npm link
    
    cd cli-dir
    npm link xlib
    
  • 取消链接本地库文件

    cd lib-dir
    npm unlink
    
    cd cli-dir
    npm unlink xlib
    
  • npm link:将当前项目链接到 node 全局 node_modules 中作为一个库文件,并解析 bin 配置创建可执行文件
  • npm link xlib:将当前项目中 node_modules 下指定的库文件链接到 node 全局 node_modules 下的库文件
  • npm unlink:将当前项目从 node 全局 node_modules 中移除
  • npm unlink xlib:将当前项目中的库文件依赖移除