首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用PNPM跨两个节点项目共享node_modules?

PNPM是一种轻量级的包管理工具,它可以帮助我们在跨两个节点的项目中共享node_modules。下面是使用PNPM跨两个节点项目共享node_modules的步骤:

  1. 首先,确保你已经在两个节点上安装了PNPM。你可以通过在终端中运行以下命令来安装PNPM:
  2. 首先,确保你已经在两个节点上安装了PNPM。你可以通过在终端中运行以下命令来安装PNPM:
  3. 在你的项目根目录下,执行以下命令初始化PNPM:
  4. 在你的项目根目录下,执行以下命令初始化PNPM:
  5. 这将创建一个pnpm-lock.yaml文件和一个pnpm-workspace.yaml文件。
  6. 在两个节点上,将项目克隆到本地。
  7. 在每个节点的项目根目录下,执行以下命令来安装项目的依赖:
  8. 在每个节点的项目根目录下,执行以下命令来安装项目的依赖:
  9. 这将根据项目的依赖关系创建一个共享的node_modules目录,并将依赖项安装到该目录中。
  10. 在每个节点的项目根目录下,执行以下命令来运行项目:
  11. 在每个节点的项目根目录下,执行以下命令来运行项目:
  12. 这将启动项目,并使用共享的node_modules目录中的依赖项。

使用PNPM跨两个节点项目共享node_modules的优势是:

  • 节省磁盘空间:PNPM使用硬链接来共享依赖项,因此不会在每个项目中重复存储相同的依赖项,从而节省磁盘空间。
  • 加快安装速度:PNPM可以并行安装依赖项,从而加快安装速度。
  • 简化项目管理:PNPM使用单个共享的node_modules目录来管理依赖项,使得项目管理更加简单和清晰。

PNPM的应用场景包括但不限于:

  • 多节点项目:当你的项目需要在多个节点上部署时,使用PNPM可以方便地共享依赖项,减少每个节点的依赖项安装时间和磁盘空间占用。
  • 团队协作:当多个开发人员共同开发一个项目时,使用PNPM可以确保每个人都使用相同的依赖项版本,避免因为依赖项版本不一致而导致的问题。

腾讯云提供了一系列与云计算相关的产品,其中包括云服务器、云数据库、云存储等。你可以通过访问腾讯云的官方网站(https://cloud.tencent.com/)了解更多关于这些产品的详细信息和使用指南。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用mono-repo实现项目组件共享

本文会分享一个我在实际工作中遇到的案例,从最开始的需求分析到项目搭建,以及最后落地的架构的整个过程。最终实现的效果是使用mono-repo实现了项目的组件共享。...产出一个可以项目共享组件的项目架构。...所以最后我们决定部署两个站点,柜员界面和客户界面单独部署到两个域名上。 组件重复 既然是两个站点,考虑到项目的可扩展性,我们创建了两个项目。...但是使用了mono-repo,因为他们代码都在同一个Git仓库,我们在一个commit里面就可以修改两个项目的代码,然后统一打包,测试,发布,如果我们使用了lerna管理工具,版本号的依赖也是自动更新的...由于我是准备用它来放共享组件的,所以我把目录结构调整了,默认生成的两个文件夹都删了,新建了一个components文件夹: ?

3.1K41
  • 从npm发展历程看pnpm的高效

    动辄上百M 在业务开发中,安装几个项目项目体积好几G,对使用者们极其不友好。...\ 而且这个提升的顺序,也不是根据使用量优先提升,而是根据先来先服务原则,先安装的先提升。这会导致不确定性问题,随着项目迭代,npm i 之后得到的node_modules目录结构,有可能不一样。...A 是 B 的硬链接(A 和 B 都是文件名)则 A 文件中的 inode 节点号与 B 文件的 inode 节点号相同,即一个 inode 节点对应两个不同的文件名,两个文件名指向同一个文件, 软硬链接...是linux 中解决文件的共享使用问题的两个方式,目的也是为了节省磁盘空间。...待研究的问题 pnpm-lock.yaml 文件里的属性和生成过程 pnpm 对peerDependencies 的处理 老项目使用yarn 或者npm 如何迁移 pnpm npm yarn 工作空间workspace

    2K40

    JavaScript 包管理器

    相较 npm 和 Yarn,pnpm 具有更少的重复代码, 因为它可以与所有项目共享相同的依赖,这对于多项目开发者来说非常优美。 总之,选择哪个包管理工具取决于自己的喜好和项目需求。...如果多个项目使用相同的依赖项,则 pnpm 仅下载一次该依赖项, 并在 node_modules 目录中创建符号链接以便在多个项目之间共享。...它们的主要区别在于它们如何确保依赖项和包版本的一致性, 以及如何管理 node_modules 目录中的包。...依赖项的版本信息保留在 node_modules/.pnpm-store 目录中的元数据文件中。 依赖项的符号链接技术允许多个项目共享相同的依赖项,这样可以节省磁盘空间和下载时间。..., 但是依然可以使用, 这样就造成了如果哪天 express 改变了策略不再使用 cookie,而我们的项目中又使用了 cookie, 这样就会导致项目无法启动 虽然 npm 是共享了相同版本的依赖,

    1K10

    关于现代包管理器的深度思考——为什么现在我更推荐 pnpm 而不是 npmyarn?

    三、依赖管理 npm/yarn install 原理 主要分为两个部分, 首先,执行 npm/yarn install之后,包如何到达项目 node_modules 当中。...其次,node_modules 内部如何管理依赖。 执行命令后,首先会构建依赖树,然后针对每个节点下的包,会经历下面四个步骤: - 1. 将依赖包的版本区间解析为某个具体的版本号 - 2....比如 React 有一些内部变量,在两个不同包引入的 React 不是同一个模块实例,因此无法共享内部变量,导致一些不可预知的 bug。...项目中仍然可以非法访问没有声明过依赖的包 后面两个都好理解,那第一点中的不确定性是什么意思?这里来详细解释一下。 假如现在项目依赖两个包 foo 和 bar,这两个包的依赖又是这样的: ?...举例如下: // 移除 axios pnpm uninstall axios --filter package-a pnpm link 将本地项目连接到另一个项目。注意,使用的是硬链接,而不是软链接。

    3K20

    精读《pnpm

    使用 pnpm 很容易,可以使用 npm 安装: npm i pnpm -g 之后便可用 pnpm 代替 npm 命令了,比如最重要的安装包步骤,可以使用 pnpm i 代替 npm i,这样就算把...pnpm 使用起来了。...每个项目node_modules 下有 .pnpm 目录以打平结构管理每个版本包的源码内容,以硬链接方式指向 pnpm-store 中的文件地址。...已经脱离当前项目路径,指向一个全局统一管理路径了,这正是项目复用的必然选择,然而 pnpm 更进一步,没有将包的源码直接存储在 pnpm-store,而是将其拆分为一个个文件块,这在后面详细讲解。...比如包 bar peer-dependences 依赖了 baz^1.0.0 与 foo^1.0.0,那我们在 Monorepo 环境两个 Packages 下分别安装不同版本的包会如何呢?

    90520

    最高性能的包管理器-pnpm

    同样的也因为打平了 node_modules 中的依赖,就会造成了相同版本的子依赖包在被不同的项目依赖所依赖时会安装两次(即上面的图,B/C 两个包都依赖了 D@2.0.0) 安装很慢。...Store pnpm在全局通过Store来存储所有的 node_modules 依赖,并且在 .pnpm 中存储项目的hard links 在使用 pnpm项目安装依赖的时候,如果某个依赖在 sotre...使用方法为 pnpm store prune ,它提供了一种用于删除一些不被全局项目所引用到的 packages 的功能,例如有个包 axios@1.0.0 被一个项目所引用了,但是某次修改使得项目里这个包被更新到了...并通过软链接指向 .pnpm 下一级的 foo@1.0.0 .pnpm/foo@1.0.0 一样通过硬链接指向 Store 迁移和问题 我们现在可能用的是 npm 或者 yarn,那我们如何更好的过渡到...可以通过 pnpm import 的方式。参考[4] 只允许使用 pnpm。参考[5] 解决冲突。跟 npm 和 yarn 一样。

    1.7K20

    npm、yarn与pnpm详解

    当多个项目共享相同依赖时,这些依赖可能会在每个项目node_modules目录下单独复制一份。...pnpm的独特之处还在于它能更好地处理深层依赖场景,尤其是当项目存在大量共享依赖时,其带来的性能提升尤为明显。...总结 特性/工具 npm Yarn pnpm 工作原理 递归地安装所有依赖到node_modules目录下 构建扁平化的依赖树并优化安装过程 使用单个全局存储层和符号链接来减少磁盘空间占用 安装方式 npm...install yarn add/install pnpm install 缓存机制 本地缓存每个项目的依赖 共享缓存,保证多个项目间的依赖版本一致 共享存储层缓存,避免重复下载 安装速度 相对较慢,...生态: npm拥有最大的生态系统,但由于Yarn和pnpm的高度兼容性,大多数npm包都可以无缝迁移到这两个工具上。 在实际项目中,开发者可以根据项目的具体需求和团队偏好选择合适的包管理器。

    28210

    包管理工具

    可以说是 npm 的替换,如果你现在的项目是 npm 项目,那么可以直接使用 Pnpm Pnpm 的出现是为了解决 Yarn 的问题,因为 Yarn 不解决例如磁盘占用的问题以及内部的发展不公开等原因,...这允许您在项目之间共享相同版本的依赖项。 由于这种依赖关系的链接,它也比它的替代品快 2 倍。...模块可以访问他们并不依赖的包 平展依赖树的算法非常复杂 一些软件包在一个项目中被复制 node_modules 模块/文件夹 #pnpm pnpm 会创建"奇怪"的 node_modules 结构 pnpm...解决的不是平铺目录所带来的问题,而是解决 npm v3 版本之前的树结构的依赖问题 我们先创建两个目录进行比较,先建立一个 npm 的包管理项目,然后在建立一个 pnpm 包管理项目 npm init...Yarn Berry:把所有的文件下载到当前项目中,压缩成 zip 的形式存储 pnpm:把 tgz 解压为文件,以 hash 方式全局缓存, 同个包的不同版本的同个文件也能共享,再次安装时直接硬链接过去

    2.7K20

    Bun 1.0 发布了,以后 Node.js 项目谁还用 Webpack 与 pnpm?!是时候祭出大杀器 Bun了(一)

    我们举个例子,我们的项目依赖了 A 和 B 两个包,这两个包又依赖了 C,但却是 C 的不同版本,且 C 的这两个版本还不同,甚至有冲突,这就带来了隐藏的工程化灾难。...于是,在团队规范允许的情况下,能使用 pnpm,就不使用 yarn 和 npm。...我选了我的博客项目使用下面的指令依次清扫上次安装留下的痕迹: rm -rf node_modules pnpm-lock.yaml rm -rf node_modules yarn.lock rm -...在我的测试中,我只是删除了工程项目下的 node_modules 文件夹及相关的 lock 文件,并没有删除公共的、共享的包管理工具缓存目录。如果严格执行,bun 的表现应该没有这么优秀。...如何安装 bun?

    2K20

    这些前端新技术你很难再忽视了 —— Monorepo

    答: Monorepo:只有一个仓库,并且把项目拆分多个独立的代码工程进行管理,而代码工程之间可以通过相应的工具简单的进行代码共享。...├── src/ │ ├── views/ │ ├── router/ | ├── ... ├── README.md 如果有公共用到的东西,会通过 npm 发包更新后,两个项目再安装更新.... │ └── lib/ └── README.md 当然可以,但是更多时候两个项目杂糅在一起,代码容易造成混乱,并且项目要一同部署,没有做到解耦。 那 Monorepo 会是怎样的展现?...├── pnpm-workspace.yaml 代码共享只需要在 package.json 添加包名,然后再到项目中各自引用即可,无需再发 npm 包。...Monorepo 和 pnpm 结合使用pnpm 由于 symlink 和 hard link 机制,既极大的缩小了安装包的体积,同时也解决了幽灵依赖的问题,前一篇文章提到过,有兴趣可以去看一看。

    69420

    这些前端新技术你很难再忽视了 —— pnpm

    节省磁盘空间 当使用 npm 或 Yarn 时,如果你有 100 个项目,并且所有项目都有一个相同的依赖包,那么, 你在硬盘上就需要保存 100 份该相同依赖包的副本。...这让你可以在项目之间方便地共享相同版本的依赖包。 安装包速度快 安装包速度有多快呢?...依赖分身 依赖分身指的是:相同版本的依赖被重复安装 在上例基础上,我们假设再新增两个依赖关系:A 和 D 都依赖 B@1.0.0、C 和 E 都依赖 B@2.0.0 关系演变成: node_modules...pnpm 则是通过使用符号链接的方式仅将项目的直接依赖项添加到 node_modules 的根目录下。既保证了安全性,又解决了非法访问依赖、不确定性、重复安装的问题。 Where 官方文档地址?...How 怎么使用? 答:跟 npm install 类似,安装项目下所有的依赖。

    1.3K20

    pnpm 为何广受好评

    hello-soft -> hello 他们的区别有以下几点: 软链接可理解为指向源文件的指针,它是单独的一个文件,仅仅只有几个字节,它拥有独立的 inode 硬链接与源文件同时指向一个屋里地址,它与源文件共享存储数据.../node_modules/.pnpm/lodash@3.0.0 ./node_modules/.pnpm/lodash@4.0.0 ....@3.0.0 如此,依赖软链接的方式,可解决重复依赖安装 (doppelgangers) 的问题,「如果一个项目占用 1000 MB,那么使用 pnpm 可能仅占用 800 MB」 然而它除此之外,还有一个最大的好处...,「如果一个项目占用 1000 MB,传统方式十个项目占用 10000 MB,那么使用 pnpm 可能仅占用 3000 MB」,而它得益于硬链接。...再借用以上示例,lodash@3.0.0 与 lodash@4.0.0 会生成一个指向全局目录的硬链接,如果新项目依赖二者,则可复用存储空间。 .

    40610

    快速理解 Vite 的依赖预构建

    对这方面感兴趣的同学,可以看完文章后,自行查看 Vite 源码 预构建的发生了什么 我们直接拿一个项目来运行一下,这里我们直接使用 Vite 仓库源码的 Vue example 我们运行 vite 命令前设置.../.pnpm/lodash-es@4.17.21/node_modules/lodash-es/lodash.js", "vue": "D:/tencent/app/vite/node_modules...{ "lodash-es": "D:/tencent/app/vite/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/lodash.js...", "lodash-es/merge.js": "D:/tencent/app/vite/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es...当设置了 splitting 为 true 时,在多个 entry 入口之间共享的代码,会被分成单独共享文件(chunk 文件) 因此 vue 和 ant-design-vue 的打包结果会是这样:

    1.5K30

    Monorepo——探秘源码管理新姿势!

    如何去设计仓库的代码管理策略将会直接影响项目的开发流程和使用体验。.../lib'; // script引入共享 在Multi-repo这个策略下,两个Project会单独成立代码工程放入两个仓库当中...这里,总结比较常见的问题,并结合Monorepo的优劣势来做出决策,选择是否采用Monorepo来管理团队的代码: 项目的代码规模如何项目的开发人员规模如何项目是否依赖权限管理?...支持Monorepos:pnpm内置支持了单仓多包,使用起来相当简单。 严格:pnpm创建了一个非平铺的node_modules,因此代码无法访问任意包。...包版本方案 除了包依赖的管理以外,如何去管理众多项目的版本也是完善Monorepo工具链的重要部分,而其中最为出名的就是Lerna,它通常会配合Yarn一起使用,另外一个则是新兴的版本管理工具Changesets

    2.1K22

    快速理解 Vite 的依赖预构建

    对这方面感兴趣的同学,可以看完文章后,自行查看 Vite 源码预构建的发生了什么我们直接拿一个项目来运行一下,这里我们直接使用 Vite 仓库源码的 Vue example我们运行 vite 命令前设置.../.pnpm/lodash-es@4.17.21/node_modules/lodash-es/lodash.js", "vue": "D:/tencent/app/vite/node_modules...{ "lodash-es": "D:/tencent/app/vite/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/lodash.js...", "lodash-es/merge.js": "D:/tencent/app/vite/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es...当设置了 splitting 为 true 时,在多个 entry 入口之间共享的代码,会被分成单独共享文件(chunk 文件)因此 vue 和 ant-design-vue 的打包结果会是这样:图片打包产物

    4.1K51

    使用 Docker 实现前端应用的标准化构建、部署和运行

    一个 RUN 支持指定多个 —mount ⚠️ 因为采用挂载形式,这种设备会导致 pnpm 回退到拷贝模式(pnpm store → node_modules),而不是链接模式,所以安装性能会有所损耗...第一种解决办法就是创建两个 Dockerfile, 这个方案的缺点就是指令重复(比如 pnpm 安装依赖)。另一个缺点就是如果任务之间有依赖或文件交互,那么整合起来也会比较麻烦。...集成到 CI/CD 平台 上文,我们探索了使用 Docker 来实现‘平台’(CI/CD) 的构建任务。看起来还不错,应该能够满足我们的需求。...比如可以实现‘子应用发现’、动态配置替换之类的工作 坏处:依赖 PVC 共享存储。我们也有遇到部分客户环境不支持共享 PVC 的。...我在这篇文章中分了两个维度来讨论它, 一是将它作为一个’平台’的任务运行环境,它让我们可以在一致的环境中运行单测、构建、发布等任务;二是讲怎么将前端应用容器化,对齐后端,利用现有的容器管理平台来实现复杂的部署需求

    2.2K41

    bun 介绍四:自动安装依赖项,bun 立志要做一个零配置的快速框架

    在 webpack 工程中,无论是使用 pnpm,还是 yarn,在运行项目之前都需要执行 pnpm i 或 yarn,这是在安装依赖项,将项目代码中引用的类库放在当前项目node_modules...如果你的项目是新项目,没有被 pnpm、yarn 等包管理工具蹂躏过,本身就没有 node_modules 目录,那么自动安装后仍然没有,也就是说,下次你仍然可以继续享用自动安装的便利。...如果这是一个使用pnpm 或 yarn 的旧项目,它可能有一个 package.json 文件,里面的 devDependencies 节点或 dependencies 节点记录了本地项目的依赖项,...这里可能会产生未知 Bug,当团队中的两个使用同一个类库并且均是以 latest 确定版本的情况下,有可能两个人实际使用的版本不一致。...有人甚至提议将本地全局缓存设置成某个局域网的共享目录,大家维护同一个缓存,不要这样做。这个目录不仅有读取,还有写入,两个人同时写入可能会发现意想不到的错乱。

    1.4K60

    Monorepo(单体仓库)与 MultiRepo(多仓库): Monorepo 单体仓库开发策略与实践指南

    一致性管理:可以统一管理依赖、构建和发布流程,确保不同项目的开发环境和工具链的一致性。 简化依赖管理:项目的依赖管理变得更加简单,减少了依赖冲突和版本不兼容的问题。...依赖管理:项目的依赖管理复杂,需要额外的工具和配置。 协作效率:团队成员需要在多个仓库之间切换,可能降低协作效率。 3....如何管理项目的依赖 统一版本:确保所有项目使用相同版本的依赖,避免版本冲突。...示例项目架构 root ├── .husky # Git钩子,自动化代码检查 ├── node_modules # 依赖存放 ├── packages # 各项目或包的集合...通过使用 pnpm workspaces,可以有效地管理多个项目和包,使其共享依赖、统一构建和测试流程,提高开发效率和项目的一致性。

    39210
    领券