umi 学习笔记

312 阅读2分钟

a. 包管理工具为什么是 pnpm

  • 1.pnpm在安装依赖方面做了优化,通过hardlink机制,可以从不同的路径访问同一个文件---比如某一个依赖在node_moudules,目录以及全局 store 目录 1MB 的空间(加起来是 2MB),但因为 hard link 的机制使得两个目录下相同的 1MB 空间能从两个不同位置进行寻址,因此实际上这个 a 依赖只用占用 1MB 的空间,而不是 2MB,从而提升依赖管理性能。

  • 能避免同一个依赖在不同项目中使用导致的重复下载---在使用 pnpm 对项目安装依赖的时候,如果某个依赖在 sotre 目录中存在了,就会直接从 store 目录里面去 hard-link,避免了二次安装带来时间消耗。

  • 可以对于某些依赖不被使用的历史版本进行统一清理 b.lerna 是什么:

  • Lerna是优化多个包的代码库的管理工具,可以在一个主项目下管理多个子项目,从而解决多个包互相依赖,发布时需要手动维护多个包的问题

  • 工作模式:1.independent,每次发布一个包的更新,对其他包不产生影响,可以指定主要更改、次要更改还是补丁等2.fixed,每次发布一个包的更新,所有包都重新发布

  • 优点:

    1. 通过git 检测文件改动,自动发布
    2. 根据git 提交记录,自动生成CHANGELOG
    3. issue的集中管理,解决多包库的issue混乱痛点 c. Umi 仓库的形态 monorepo 是什么

monorepo对项目的管理相比于传统模式类似外卖和自助餐的关系(吃货理解)

传统:依赖与项目绑定,食物与顾客绑定。

monorepo:顾客按需选去食物,项目按需调用依赖

项目:每一个项目相当于一位顾客,有食物就是项目的依赖,传统模式下每份食物送到客户手中,每位客户独享一整份食物(依赖)。

常用依赖的作用:

husky

git  hook 保存在.git文件夹中,git多人协作工具在上传项目到远程仓库时不会把.git文件上传,要分享git hook文件就要使用husky.原理:在项目根目录中写一个配置文件,然后在安装 Husky的时候把配置文件和 Git Hook 关联起来,这样我们就能在团队中使用 Git Hook 了

jest

Jest是 Facebook 的一套开源的 JavaScript 测试框架, 它自动集成了断言、JSDom、覆盖率报告等开发者所需要的所有测试工具,是一款几乎零配置的测试框架。并且它对同样是 Facebook 的开源前端框架 React 的测试十分友好。

prettier:(代码格式化)

tsc 编译 ts 代码为 js 代码

esno