当前位置: 首页 > news >正文

手写 Vue 源码 === 搭建 Monorepo 环境

目录

1.全局安装 pnpm

2.创建.npmrc 文件

.npmrc

设置 shamefully-hoist=true:

3.配置 workspace

4.环境搭建

5.初始化 TS

6.创建模块

7.开发环境esbuild打包


Monorepo 是管理项目代码的一个方式,指在一个项目仓库(repo)中管理多个模块/包(package)。 Vue3 源码采用 monorepo 方式进行管理,将模块拆分到 package 目录中。作为一个个包来管理,这样职责划分更加明确。

  • 一个仓库可维护多个模块,不用到处找仓库
  • 方便版本管理和依赖管理,模块之间的引用,调用都非常方便

Vue3 中使用pnpm workspace来实现monorepo (pnpmopen in new window是快速、节省磁盘空间的包管理器。主要采用符号链接的方式管理模块)

1.全局安装 pnpm

npm install pnpm -g # 全局安装pnpm
pnpm init  # 初始化配置文件

2.创建.npmrc 文件

.npmrc

.npmrcnpm 的配置文件,用于定义和管理 npm 的各种行为,比如:

  • 设置私有 registry(注册源)

  • 保存 token、认证信息

  • 配置包的安装路径、缓存路径等

  • 各种行为开关,如是否生成 package-lock.json

.npmrc 文件可以存在于不同级别:

位置作用范围
项目根目录下的 .npmrc仅影响当前项目
用户主目录(如 ~/.npmrc影响当前用户的所有项目
全局(如 /etc/npmrc影响所有用户

shamefully-hoist=true 是什么?

这是 pnpm(而非 npm) 的一个配置项,用于控制依赖的 hoisting(提升)方式。

默认行为(pnpm 默认):

  • pnpm 会把每个依赖安装在自己的隔离目录中,避免依赖污染。

  • 这有助于防止 "依赖地狱",但某些依赖可能找不到自己需要的库(尤其是老旧的依赖)。

设置 shamefully-hoist=true
  • pnpm 会将所有依赖都提升到项目的 node_modules 根目录下。

  • 这种方式 更像 npm 和 Yarn 的行为,兼容性好,但失去 pnpm 原本的隔离优势。。

shamefully-hoist = true

这里您可以尝试一下安装Vue3pnpm install vue此时默认情况下vue3中依赖的模块不会被提升到node_modules下。 添加羞耻的提升可以将 Vue3,所依赖的模块提升到node_modules

3.配置 workspace

新建 pnpm-workspace.yaml

pnpm-workspace.yamlpnpm 用于管理 Monorepo 项目的配置文件

它告诉 pnpm 哪些子项目

相关文章:

  • Webug4.0靶场通关笔记10- 第14关链接注入
  • 【Hot 100】 146. LRU 缓存
  • (笔记)List
  • 接口隔离原则(ISP)
  • 动态规划之多状态问题1
  • LeetCode - 19.删除链表的倒数第N个结点
  • 第十四篇:系统分析师第三遍——15章
  • 强化学习:山地车问题
  • 什么是“原子变量”?
  • 在多线程环境下如何设计共享数据结构保证原子操作与数据一致性
  • 解决奥壹oelove婚恋原生小程序上架问题,彻底解决解对问题增强版旗舰版通用
  • Ubuntu 24.04 通过 update-alternatives 切换GCC版本
  • PowerShell从5.1升级到7.X
  • C++类_运算符的重载
  • 线性DP(动态规划)
  • flask 获取各种请求数据:GET form-data x-www-form-urlencoded JSON headers 上传文件
  • 物联网智能项目之——智能家居项目的实现!
  • 开源项目实战学习之YOLO11:ultralytics-cfg-models-rtdetr(十一)
  • 循环缓冲区
  • 实验-组合电路设计1-全加器和加法器(数字逻辑)
  • “80后”海南琼海市长傅晟,去向公布
  • 中邮保险斥资8.69亿元举牌东航物流,持股比例达5%
  • 一网红被指涉脱衣殴打霸凌事件,沈阳警方:刑拘1人,处罚5人
  • “子宫内膜异位症”相关论文男性患者样本超六成?福建省人民医院展开调查
  • 青年与城市共成长,第六届上海创新创业青年50人论坛将举办
  • 非洲中青年军官代表团访华,赴北京、长沙、韶山等地参访交流