1.新建pnpm+monorepo架构项目
<h4> </h4><h4>一、前期准备:</h4>
<p style="margin-left: 30px">1. 准备node环境(推荐nvm方式管理node版本);</p>
<p style="margin-left: 30px">2.安装pnpm(pnpm 通过创新存储模型解决了 npm/yarn 的磁盘冗余、依赖污染等核心痛点,尤其适合 Monorepo 项目、低存储环境及高稳定性要求的场景<span><span><span class="cos-tooltip cosd-citation"><span class="cosd-citation-citationId "><span><span class="cos-tooltip cosd-citation"><span class="cosd-citation-citationId ">。若项目无特殊兼容需求,pnpm 是当前最优解。</span></span></span></span></span></span></span>);</p>
<div class="cnblogs_code">
<pre>npm i pnpm -g</pre>
</div>
<h4>二、创建项目:</h4>
<p> 1.使用pnpm初始化项目:</p>
<div class="cnblogs_code">
<pre>pnpm init</pre>
</div>
<p> 2.创建pnpm-workspace.yaml文件</p>
<p> 该文件用于在 Monorepo 项目中统一管理多个子包间的依赖关系和构建流程。是<span style="color: rgba(255, 0, 0, 1)">pnpm 工作区(Workspace)核心配置文件</span></p>
<ul>
<li style="list-style-type: none">
<ul>
<li><span style="color: rgba(0, 0, 0, 1)">创建方式:</span></li>
</ul>
</li>
</ul>
<p><span style="color: rgba(0, 0, 0, 1)"> 1.手动创建</span></p>
<ul>
<li style="list-style-type: none">
<ul>
<li><span style="color: rgba(0, 0, 0, 1)">作用:</span></li>
</ul>
</li>
</ul>
<p><span style="color: rgba(0, 0, 0, 1)"> 1.</span>定义工作区范围</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">packages:
</span>- "packages/**"<span style="color: rgba(0, 0, 0, 1)"> # 递归匹配所有嵌套子包
</span>- "apps/*"<span style="color: rgba(0, 0, 0, 1)"> # 匹配 apps 一级目录下的子包
</span>- "demo" # 单独指定 demo 目录</pre>
</div>
<p> 子包需要满足:</p>
<ul>
<li style="list-style-type: none">
<ul>
<li style="list-style-type: none">
<ul>
<li>包含独立的 <code>package.json</code> 且声明 <code>name</code> 字段</li>
<li>目录路径匹配配置文件中的规则</li>
</ul>
</li>
</ul>
</li>
</ul>
<p> 2.实现跨包依赖共享</p>
<p> 3.统一依赖管理:根目录运行 <code>pnpm install</code> 可一次性安装所有子包依赖,并自动处理内部链接</p>
<p> </p>
<p>项目地址:https://gitee.com/cheng_zhen_guo/blog_demo_monorepo/tree/master</p>
<div><span style="margin: 0; padding: 0; -webkit-font-smoothing: antialiased; scrollbar-color: rgba(184, 186, 193, 0.6) transparent; scrollbar-width: thin; color: rgba(51, 51, 51, 1); font-family: "PingFang SC", Arial, sans-serif; font-size: 16px"> </span></div><br><br>
来源:https://www.cnblogs.com/chenghuayike/p/18930392
頁:
[1]