- 为什么要设计脚手架
- 所有的项目都是通过项目脚手架来创建
- 通过工具实现前端自动化,是提高研发效率的主要抓手
- 基础架构团队专门维护
- 必要性
- 提升前端研发效率(多团队,通用代码模板的初始化)
- git操作自动化,节约开发时间和麻烦
- 项目构建和发布
- 价值
- 研发过程自动化
- 研发过程标准化
- 研发过程数据化,优化流程的抓手
- 问题:自动化构建工具不能完全满足我们的要求(jenkins)
- 无法照顾到项目的本地开发
- jenkins插件是通过java语言开发
- 前端扩展性的功能相对简单
- 脚手架原理
- 脚手架是操作系统客户端 vue : 主命令 command : create param: vue-test-app --option : 选项 -: 选项参数
终端输入 > 在环境变量中找到vue命令 > 链接到vue.js文件 > node解析vue.js > vue.js 解析command > vue.js 执行command
问题:
-
vue-cli全局安装后添加一个命令为vue 因为在node的packge.json中绑定了路径,在bin中都为可执行命令,在vue-cli的packge.json当中绑定了vue命令和vueJs
-
全局安装vue-cli,发生了什么 node会将包下载到node_modules里面,解析包的bin里面解析packge.json,然后在node的bin目录配置一个软链接
-
vue命令为什么会执行node 在执行vue命令的时候,在环境变量$PATH中找到vue命令有没有注册,链接到vue.js文件,在vue.js 文件上添加了环境变量,指定用node执行,在环境变量中去找到node命令,执行
- 本质
- 脚手架是操作系统上的一个客户端 node是操作系统,通过命令行和参数执行 node编写软链接,会连接到包的js文件(可执行文件)
- CLI(脚手架)开发最佳实践 脚手架的开发要注意以下几个问题:
- 分包
- 注册命令
- 参数解析
- 帮助文档
- 命令行交互
- 日志打印
- 变色
- 通信,文件交付
- CLI创建
- 创建文件夹(项目目录,如:guokang-cli)
- 初始化目录 npm init
- 创建bin目录, 添加执行文件 index.js
- 执行文件首行添加环境变量 #!/usr/bin/env node
- 修改packge.json, 绑定"bin"命令
{
"name": "guokang-cli",
"version": "1.0.3",
"description": "guokang's cli",
"main": "index.js",
"bin": {
"guokang-test": "bin/index.js"// 绑定命令
},
"scripts": {
"test": "test"
},
"keywords": [
"cli"
],
"author": "loove",
"license": "ISC",
"dependencies": {
}
}
- 登陆npm login, 通过npm publish 发布(npm怎么创建私库)
- 通过npm i xxx 安装
- CLI调试
- 移除脚手架(npm remove -g xxx)
- 在项目目录,添加npm link,实现本地调试
// 目录
// -guokang-cli
// --bin
// --package.json
// cmd cd到 guokang-cli目录下
npm link
// 效果:包输出基于本地代码的逻辑输出
- 分包
// 本地联调,到项目目录下,通过npm link xxx,引入本地包
npm link guokang-cli-lib
// 线上发布
npm publish
// 安装线上版本,先解除本地link
npm unlink guokang-cli-lib
npm i guokang-cli-lib
// 校验
guokang-tests
- CLI 注册命令、解析参数
- process是当前 Node.js 进程的有关信息
- process.argv返回一个数组,这个数组包含了启动Node.js进程时的命令行参数
- process.argv[0]表示启动Node.js进程的可执行文件所在的绝对路径
- process.argv[1]——为当前执行的JavaScript文件路径
- 剩余的元素为其他命令行参数
*. 验证npm link的作用(unlink作用相反) 链接npm的全局node-modules,和npm i -g的作用相似。所以,在包(无论是外部和是本地)无法按预期更新时,都要到npm的node-modules里删除对应的包。
// 移除guokang-cli
npm remove -g guokang-cli
// 到项目目录,本地调试
npm link
// 显示
// windows
where.exe guokang-test
C:\Users\zero\AppData\Roaming\npm\guokang-test
// npm目录下的node-modules,出现guokang-cli的链接
- 项目体验
// 安装
npm i guokang-cli
// 测试
guokang-test
找前端知己,一起探索 找同事,一起做国康的前端基础建设,简历请投2758570254@qq.com