Pnpm  Monorepo 和 Turborepo

1,092 阅读3分钟

1.pnpm 包管理工具

mklink /H ying.js index.js 创建硬链接,可以共享同一个内存地址

mklink runan.js   index.js 管理员模式才能创建  。 类似一个快捷方式,指向的是index.js,不会占用资源

以上创建链接的方式是window系统的,mac上需要使用In命令,如下:

ln ,其中, 是要创建硬链接的目标文件(已存在的文件),而 是要创建的硬链接的文件名。

ln index.js ruan.js  先创建一个index.js。执行命令后会自动生成一个ruan.js,内容和index.js一样

ln -s 创建软链接。不行呢。即使sudo 以管理员身份运行也不行。

pnpm store path 可以查看电脑磁盘所有的依赖包

常用命令

pnpm add

pnnp I

uninstall 

Remove

Import

2.Monorepo 在一个代码仓库下管理多个项目

创建一个主应用

npm init vue 

name main

创建子应用 web目录

npm init vite

vue-demo

react-demo

根目录里面创建一个文件

pnpm-workspace.yaml 

在根目录下执行pnpm i

pnpm -F react-demo dev 根目录下也可以执行子应用

common 可以把公共的提到一个单独的文件

pnpm -F main add common 

这个功能太棒了 公共的方法可以共享,并且添加到了子应用的package.json的依赖中

scripts {.png

那问题来了,如果多个包都配置好了依赖,想要一键安装怎么办,一个一个包去这样做吗?

还是说pnpm i -F core ui util

三个还好说,三十个呢?

这个时候我们需要了解一下 -r, --recursive 命令可以做到一键递归安装

www.jianshu.com/p/906a76b84…

3.Turborepo 快速构建项目

turbo-pack.cn/repo/docs

Turbo利用缓存和一些计算规则,加速项目构建,重新构建时间会加快,可以应用在

一:一个普通的项目上,Add Turborepo to your existing project

1.pnpm install turbo --save-dev

2.Add a turbo.json file at the base of your new repository

3.pnpm turbo build lint

4.不做任何改动重新执行

pnpm turbo build lint

5.pnpm turbo dev

二:Creating a new monorepo

如何创建,可以直接从github clone一个或者执行npx create-turbo@latest 会下载create-turbo cli命令并初始化一个项目

1.npx create-turbo@latest需要定义项目名称和选择包管理工具

2.查看项目的package.json,了解依赖关系

web - depends on ui, tsconfig and eslint-config-custom

docs - depends on ui, tsconfig and eslint-config-custom

ui - depends on tsconfig and eslint-config-custom

tsconfig - no dependencies

eslint-config-custom - no dependencies


3.理解turbo.json

根目录下的package.json配置了scripts,她们都在turbo.json中定义了。

4.执行pnpm run lint,重新执行和第一次执行时间大大缩短了,利用了缓存

5.执行 pnpm run build  重新执行和第一次执行时间大大缩短了,利用了缓存

6.执行pnpm run dev 这个cache:false,因为没有打包产物

三 Add Turborepo to your existing monorepo 对一个已经存在的monorepo管理的工程添加Turborepo

1.项目根目录下执行pnpm add turbo -Dw 

2.项目根目录下创建turbo.json文件,增加pipeline配置

3.执行npx turbo run build test lint

4.可以修改 package.json scripts

{  "scripts": {    "build": "turbo run build",    "test": "turbo run test",    "lint": "turbo run lint",    "dev": "turbo run dev"  }}

5.修改后只需要执行pnpm run build即可了

vercel  免费部署项目,提供云端缓存 remote cache 

Turbo通过其远程缓存功能可以帮助多人远程构建云缓存实现了更快的构建。

vercel.com/contact/sal…

可以通过^符号来显式声明该任务具有拓扑依赖性,需要依赖的包执行完相应的任务后才能开始执行自己的任务

只执行某个子应用

pnpm build --filter=@relaxed/utils