pnpm + vite 从外网迁移到内网环境开发

离线安装pnpm

  1. 在有外网的机器上执行以下命令,下载pnpm的tgz压缩包至桌面,注意下载版本和当前使用版本保持一致
bash 复制代码
npm pack -g pnpm@7.4.0 --pack-destination ~/Desktop
  1. 将tgz压缩包拷贝至离线机器
  2. 在离线机器中执行命令
bash 复制代码
npm -g i /home/user/offline/pnpm-7.4.0.tgz

参考: 如何离线安装pnpm - 知乎

复制源码

  1. 复制整个项目代码,重点是node_modulespnpm-lock.yaml
  2. 复制.pnpm-store文件夹,该文件夹位置在项目代码同级根目录下。例如项目代码在E:/project/project1。E:/.pnpm-store。注意该文件夹为隐藏文件夹,并且该文件夹要在pnpm install后才会出现。
  3. 将这两个文件夹复制到内网相同目录下。例如都复制到E盘下,不要改目录结构
  4. 进入C:\Users\Admin\AppData\Local\。复制pnpm-cache文件夹至内网相同目录下。用户名目录可能不一致。注意AppData文件夹为隐藏文件夹。
  5. 进入内网E盘下的项目代码目录,打开命令行工具,执行pnpm install命令,等待执行完成。
  6. 如果pnpm install执行报错也不要紧,继续执行pnpm dev
  7. 如果提示vite命令不存在,可以看下node_modules/.bin文件夹下是否有vite.CMD。如果没有,重新从外网环境中拷贝一份即可。

离线安装"新"依赖(windows)

  1. 迁移完毕后,如果现有项目需要一个新的依赖包,又在离线的情况下,可以先去node_modules/.pnpm/node_modules文件夹下去查看,已安装依赖中,有没有添加该依赖,如果有可以直接在项目中引用
  2. 因为pnpm的原理是,如果有项目/依赖都是用了该依赖,那么该依赖包只安装一次,然后在项目中对其添加一个符号链接文件夹(软连接)
  3. 按照这个原理,我们就可以先查看一下添加该依赖的项目中的软连接地址。比如已安装该依赖的项目是A,需要添加的项目是B,该依赖为C,执行一下命令。
bash 复制代码
dir /al E:\B\node_modules\A\node_modules

输出

2024/01/09 14:36 <JUNCTION> C [E:\B\node_modules.pnpm\A\node_modules\C]

  1. 在B项目的node_modules目录下执行添加软连接的命令,即可在B项目下正常使用C依赖。
bash 复制代码
mklink /j C E:\B\node_modules\.pnpm\A\node_modules\C
相关推荐
这是个栗子1 天前
【问题解决】用pnpm创建的 Vue3项目找不到 .eslintrc.js文件 及 后续的eslint配置的解决办法
javascript·vue.js·pnpm·eslint
gs8014012 天前
pnpm + webpack + vue 项目依赖缺失错误排查与解决
pnpm·1024程序员节
JinSoooo14 天前
pnpm monorepo 联调:告别 --global 参数
开发语言·javascript·ecmascript·pnpm
奋飛14 天前
Monorepo系列:Pnpm Workspace 搭建 Monorepo
pnpm·monorepo·pnpm workspace·catalogs·pnpm filter
前端架构师-老李15 天前
npm、yarn、pnpm的对比和优略
前端·npm·node.js·pnpm·yarn
skywalk816320 天前
pnpm(‌P‌erformance ‌N‌ode ‌P‌ackage ‌Manager‌)包管理工具在FreeBSD系统下的安装使用
人工智能·pnpm·freebsd·iflow
梵得儿SHI20 天前
Vue 开发环境搭建全指南:从工具准备到项目启动
前端·javascript·vue.js·node.js·pnpm·vue开发环境·nvm版本管理
williamdsy2 个月前
实战复盘:pnpm Monorepo 中的 Nuxt 依赖地狱——Unhead 升级引发的连锁血案
vue.js·pnpm
流氓也是种气质 _Cookie4 个月前
从依赖地狱到依赖天堂PNPM
pnpm·monorepo
止观止4 个月前
深入探索 pnpm:高效磁盘利用与灵活的包管理解决方案
前端·pnpm·前端工程化·包管理器