【摸鱼日记】记录第一次构建 Monorepo 项目

47 阅读1分钟

monorepo 项目说明

1、创建项目结构

- apps/
	各项目
- packages/
	共用组件
- package.json // 配置文件
- pnpm-workspace.yaml // npm Monorepo 配置文件,告诉pnpm 这个仓库是一个workspace工作区
  • package.json 文件
"workspaces": [
	"packages/*",
	"apps/*"
]
  • pnpm-workspace.yaml 文件
packages:
	"packages/**" // 表示包含packages 下的所有子包

2、创建公共组件

  • 已shared-ui 为例,将项目vite项目改造成npm 插件形式
    • package.json
    	"exports": {
    		".": "./src/main.js" // 定义包的导出入口
    	},
    	"files": ["src"] // 指定当包发布到npm时,需要包含的目录列表
    
    • main.js 入口文件,导出组件
    	export { default as 组件名称 } from "组件路径";
    

3、在子应用中使用公共组件

  • 所在子应用中引入组件, @workspace:* 告诉pnpm 从workspace里找(pnpm-workspace.yaml)
pnpm add shared-ui@workspace:*
  • 所需子应用中,导入并使用组件
	import { 公共组件名 } from "npm包名";

4、monorepo -- 热更新联动

  • 在保持子应用运行中 -> 修改公共组件 -> 子应用中立即生效