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的依赖中
那问题来了,如果多个包都配置好了依赖,想要一键安装怎么办,一个一个包去这样做吗?
还是说pnpm i -F core ui util
三个还好说,三十个呢?
这个时候我们需要了解一下 -r, --recursive 命令可以做到一键递归安装
3.Turborepo 快速构建项目
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通过其远程缓存功能可以帮助多人远程构建云缓存实现了更快的构建。
可以通过^符号来显式声明该任务具有拓扑依赖性,需要依赖的包执行完相应的任务后才能开始执行自己的任务
只执行某个子应用
pnpm build --filter=@relaxed/utils