pnpm + turbo 实践 monorepo

1、创建项目

npx create-turbo@latest

2、turbo.json 配置文件

"dependsOn": ["^build"], // packges 目录下包的执行命令,用于处理依赖问题,依赖项执行的命令
"outputs": ["dist/**", ".next/**"] // Turborepo将缓存默认输出到 dist/** 和build/**文件夹中。可以通过outputs数组来设置缓存的输出目录
"frontend#deploy": {
               "dependsOn": ["ui#test", "backend#deploy"]           
           } // 增加了一个前端的部署任务。这个部署任务,依赖于一个UI组件库和对应的后端项目,只有这个UI组件库通过单测,然后后端项目部署成功,才会进行部署。对于指定包的依赖,使用#语法。

3、如果考虑增量缓存可以配合 CI 机器缓存

cache:
  directories:
    - dist
    - build

3、pnpm 的作用

  • 全局安装
pnpm add react react-dom -w
  • 可以支持指定 app 安装依 

pnpm add express -r --filter @apps/react-demo

  • 项目之间相互依赖

pnpm add ui@ --filter web

安装之后考虑版本换成 * ,确保是最新的

  • 查看依赖关系

pnpm why -r

4、turbo 作用

  • 支持增量构建,配合设置缓存,加快构建速度
  • 管道概念,不一定用到
  • 配置文件的复用「看着好用,不一定要用」
  • 远程缓存,支持自建,看上去是有想象力的

参考资料

https://nx.dev/getting-started/intro

https://pnpm.io/zh/

https://turbo.build/

https://turbo.build/repo/docs/handbook/migrating-to-a-monorepo

http://mix.zhdocs.io/guide/basic.html

你可能感兴趣的:(前端,ui,javascript,开发语言,ecmascript)