zhangdizhangdi

pnpm + monorepo

概念

Mono-repo

Monolithic Repository,mono = one/single,多个项目代码存储在一个库里

Multi-repo

Multiple Repositories,multi = many,每个项目都有一个单独的库

Muti-repo and Menorepo
图:Muti-repo and Menorepo

常用命令

bash
# 生成package.json
pnpm init

# 强制使用pnpm
"scripts": {
  "preinstall": "npx only-allow pnpm"
}

# -w:安装到根目录下
pnpm add/i vitepress -w

# 为 www-note 包安装 VitePress
pnpm --filter www-note i vitepress

遇到问题

依赖提升问题

npm 由于依赖扁平化处理,使得我们原本可以访问 @vueuse/**
切换为 pnpm 后,在默认情况下不允许访问未声明的依赖,因此我们需要补充安装 @vueuse/**

公用组件/子包 ⌛️

1. git直接引用

  • 直接通过 npm install <git remote url>

2. npm私有库

一般私有化的 npm 仓库有以下几种方法实现:

  1. 通过 npm 购买私有服务
    • 个人:7美元/月
    • 团队:7美元/人/月
  2. 通过开源项目直接搭建
    • cnpm:阿里出的 npm 私有方案,权限控制较为全面但是配置复杂,需要自己搭建 mysql 之类的数据库存储。
    • sinopia:基于 Node.js 实现的一个开源 npm 库,年久失修。
    • verdaccio:基于 sinopia 继续开发

参考

3. git子库

参考