楔子

该项目是我在学习脚手架的进程中的产出,在后序学习结束并弥补了 git发布构建 方面的才华后,会逐渐去供给一些可装备的才华。

现在的话,该脚手架只供给了最根底的github中文官网网页下载模板的才华。

设备:

npm install -g @weilai-c测验li/core

运用:

projectName 是项目称谓。
脚手架不会创立新的目录,而是会再当时目录下生成模板。
模板的 pa测验郁闷程度的问卷ckage 的 name 特点即为 projectName。

weilai-cli init [projectName]

github 地址:weilai-cli

一、项目简介

weilai-cli 现在可以供给的功用有:

  1. 脚手架的通用功用(版别查询、指令帮助、debug)
  2. 通用的项目/组件创立才华(支撑定制和快速接入)
  3. 指令动态化产品范畴的偏好,可以手动指定工作的指令模块,可以活络习气不同不同场景下的需求
  4. 缓存模块和更新

weilai-cli 未来的计划(容我画个饼):

  1. 通用项目/组件的发布才华
  2. 发布进程中产品生命周期主动结束标准的 git 操作
  3. 测验网速布后主动结束云构json怎样读建等
  4. 发布支撑测验/正式两种形式
  5. 供给 open api 敞开相关的设置和装备才华

二、项目布景

开发脚手架的中心方针是进步前端研发效能。

削减一些重复性机械性的使命,把这些使命都交给程序主动结束,让开发人员的时刻和精力能会合在测验纸怎样看是否怀孕更需求json解析的地方。

标准化项目的创立、git flowjson格式 标准、发布流程、回滚流程

研发进程系统化、数据化,测验使得研发进程可以量化

痛点剖析:

  1. 创立项目/组件时,存在许多重复代码的复制 – 快速的复用已有的堆积产品范畴的偏好
  2. 协同开发,因为 git 操作的不标准,导产品密钥在哪里能找到致分支紊乱且操作耗时 – 定制标准的 git 操作标准并集成到脚手架
  3. 发布上线吃力耗时而且简单呈现各式各样的差错 – 定制标准的上线流程和标准并集成到脚手架

三、实践进程

脚手架的原理和怎样结束一个最简略产品运营首要做什么的脚手github官网架的话可以看看我之前的这个文章脚手架闲聊。

技术选型

脚手架自然选择我们前端开发人员最了解的 Node.js 去进行开发了。

依据性能上的考虑,假定我们把全部功用都集成在 cli 傍边产品设计的话,那么 cli 的体积就会很大,下载就会很慢很慢,这样体会的话就会很差,所以要对脚手架的功产品批号是生产日期吗用进行分包处理,按需加载。那么这样的话我们是否又要去维护多个库房,以及开发时分 cli 和 模块之间的 link 联络有会十分凌乱,稍有不小心就会呈现各种奇奇怪产品生命周期怪的报错,而且模块晋级照成的连锁反应也很费事,这方面采纳 Lerna 来进行多 Package 的处理,以及处理依托和 linkjson解析 的联络和代码的提交测验郁闷症的20道题软件包的发布等。

创立交互式指令行选用 commander 因为相对于 yargs 来说 comm架构ander 更简略和轻量

脚手架架构规划图

weilai-cli|项目复盘

脚手架实施流程图

weilai-cli|项目复盘

四、解决问题

实践进程中遇到的问题

脚手架结束原理

为什么全局设备 脚手架 后就能注产品生命周期册相应的指令呢?
设备脚手架的时分发生了什么?
为什么可以通过一个注册的指令去实施脚手架?
实施指令的时分发生了什么?
指令指架构师工资一月多少向什么?

在开发脚手架之前,先要了解和掌握脚手架的结束原理,不然连怎样结束的都不知道json格式,又产品密钥在哪里能找到何从开发。

通过 npm 全局设备一个脚手架例如 weilai-cli 后,会去测验手机是否被监控解析 package.json 文件中的 bin 装备;
然后会去在 node 的设备目录下的 bin 目录中,创立一个软json怎样读联接而且联接到下载的软件包中,软github直播渠道永久回家联接的称谓就是 bin 装备的 key(键值对的键),链接到的文件就是 bin 装备的 value(键值对的值),val产品经理ue 指向的文件中,需求设置 #! /usr/bin/env node 来标识文件实施的办法。

库房处理

在规划架构师证书怎样考中脚手架会分为许多个模块,那么怎样对这些模块进行处理,以及模块之间的联络产品范畴的偏好和版别处理都是一个恰当费事的事github怎样下载文件儿。

Lerna 是一个优化依据 git + npm 的多 package 项目的处理东西,能大幅削减重复的操作,进步操作的标准化流程。

Lerna 是架构优化的产品,它提醒了一个架构真理,项目凌乱度进步后,就需求对项目进json是什么意思行架构的优化,而架构测验纸怎样看是否怀孕优化的首要方针往往都是以能效github是干什么的为中心的。

活络性

假定在项目中运用指定的指令包的话,那么在唐塞不同场景的情况下就束手无策了github敞开私库,总不能去手测验你的自卑程度动修改脚手架中指令包的指向或许从头整一个出来吧?

在实施指令的时分,通过装备 --targetPath=src 然后设置为全局变量后,在实施指令的模块中去做一些判别和初始化,然后依据效果去github下载下载相应或许运用相应的软件架构

五、总结考虑

在学习和开发脚手架的进程中学习到产品了许多东西。

Node.js 的运用和了解都加深了不少,以及知道了许多小而美的库。

这块的内容着实凌乱,现在我也就是半懂不懂的姿态,还需求对知识点进行总结和收拾。

代码这块还比较凌乱,能优化的部分还挺多,功用上也还不完善。架构图模板

根柢太薄还需求加强根底方面的学习。

本文正在参与「 2021 春招闯关活动」, 点击查看 活动概略