1、Monorepo
一个项目仓库中管理多个模块/包
package "private": true,// 禁止把当前的包发布到npm
multirepo(Multiple Repository) 每一个包对应一个项目
2、Storybook
可视化的组件展示平台 在隔离的开发环境中。以交互式的方式展示组件 独立开发组件
3、yarn workspaces
开启工作区 "private": true, "workspaces": { "packages": [ "service/*" ], 开启工作区以后,通过yarn安装依赖的情况下,如果包内的依赖相同版本的包,会提升到跟目录下的node_modules,如果版本不同,也会在各自包内安装依赖
4、lerna
- Lerna是一个优化使用git和npm管理多包仓库的工作流工具
- 用于管理具有多个包的JavaScript项目
- 它可以一键把代码提交到git和npm仓库
(1)Lerna 参数含义: lerna run 执行每个模块package.json中的脚本命令 scope:packageName的形式运行指定包 parallel:忽略并发和排序,在流式前缀的匹配包运行script
(2)lerna publish 有两种工作模式 fixed/locked mode(默认):每一次发布的时候,全量更新 independent mode:每次publish的时候,会检测文件的变动,只发布有改动的包
(3)yarn本身提供了较lerna更好的依赖分析和提升功能 提升:Yarn workspace可以共享一个node_modules目录,提升开发效率和降低磁盘空间占用
在lerna.json中配置"useWorkspaces": true、"npmClient": "yarn", 在package.json中配置"private": true、"workspaces”:{"packages”:[], "nohoist”:[]}
yarn官方推荐使用yarn来处理依赖安装,用lerna来处理依赖更新和发布的问题 实际在我们的项目中,使用yarn来管理依赖安装,使用lerna管理主子应用运行,主子模块是通过webpack模块联邦进行引用的。