pnpm项目内网迁移

pnpm项目内网迁移

0.前言

要将一个依赖pnpm的项目迁移到内网离线环境下进行开发。

1.基础环境安装

要保证NodeJS版本一致,否则执行pnpm i时可能会出现与pnpm-lock.yaml中不兼容导致的问题。

查看本机的Node版本:

node -v

NodeJS各个版本的下载地址:https://nodejs.org/download/release/

将下载好的nodejs安装包拷贝到内网计算机进行安装。

2.构建pnpm离线安装包

先在本机上随便创建一个空项目,比如test文件夹下:

# npm初始化空项目,中途全部回车键默认
npm init
# 查看当前机器安装的pnpm版本,如果版本不一致,在后面pnpm i时可能会出现`node_modules will be removed and reinstalled from scratch.Proceed`的问题
# 安装特定版本的pnpm依赖
npm i pnpm@8.11.0 --install-strategy=shallow
# 切换到node_modules文件夹下,将pnpm打包后拷贝到内网计算机

3.使用pnpm重新安装项目依赖

在安装依赖前,先手动修改一下pnpm的默认配置:

# 包元数据缓存的位置。
pnpm config set cache-dir "E:\pnpm-store\pnpm-cache"
# pnpm 创建的当前仅由更新检查器使用的 pnpm-state.json 文件的目录。
pnpm config set state-dir "E:\pnpm-store\pnpm-state"
# 指定储存全局依赖的目录。
pnpm config set global-dir "E:\pnpm-store\global"
# 所有包被保存在磁盘上的位置。
pnpm config set store-dir "E:\pnpm-store\pnpm-store"

切换到前端项目路径下,删除node_modules文件夹,执行pnpm i命令,然后检查E:\pnpm-store\pnpm-store下应该有v3/file的文件夹,将E:\pnpm-store整个文件夹打包。然后删除前端项目的node_modules文件夹,将整个前端项目打包。将打包好的前端项目包和pnpm-store拷贝到内网计算机。

4.项目迁移

现在内网机上应该有3个包:pnpm.zippnpm-store.zip前端项目包

首先解压pnpm.zip,在同级目录下打开控制台窗口,执行下面命令:

npm i -g pnpm/
# 安装后,查看pnpm版本,是否与外部计算机的版本一致
pnpm -v

解压pnpm-store.zip,路径任选。

修改pnpm配置(注意路径要和解压的路径匹配):

pnpm config set cache-dir "E:\pnpm-store\pnpm-cache"
# pnpm 创建的当前仅由更新检查器使用的 pnpm-state.json 文件的目录。
pnpm config set state-dir "E:\pnpm-store\pnpm-state"
# 指定储存全局依赖的目录。
pnpm config set global-dir "E:\pnpm-store\global"
# 所有包被保存在磁盘上的位置。
pnpm config set store-dir "E:\pnpm-store\pnpm-store"

解压前端项目包,切换到前端项目路径下,执行pnpm install,等待安装完成。完成后即可启动项目pnpm run dev

参考链接:

[1]. pnpm项目内网迁移技巧

[2]. 外网pnpm安装的node_modules包迁移到内网环境提示node_modules will be removed and reinstalled from scratch.Proceed?

### 如何配置 pnpm 使用内网镜像源或私有仓库 为了使 `pnpm` 在内网环境中顺利工作并连接至指定的私有仓库,需按照如下方法调整配置: #### 设置全局注册表地址 对于希望所有项目都指向特定的私有库的情况,可以通过命令行更改默认的 npm 注册表位置。此操作同样适用于 pnpm。 ```bash pnpm config set registry http://internal-repo-url/ ``` 这条指令会更新用户的 `.npmrc` 文件来指明新的包管理服务器的位置[^1]。 #### 临时改变注册表(仅限当前CLI会话) 如果只是想一次性测试某个私有库而不影响其他项目的设置,则可以采用这种方式执行安装命令: ```bash pnpm --registry=http://internal-repo-url/ install ``` 这将在本次运行期间覆盖默认的公共 NPM 注册表链接[^2]。 #### 添加 .npmrc 到项目根目录下 另一种做法是在目标应用程序所在的文件夹创建一个名为`.npmrc` 的文本文件,并在里面写入自定义配置项,比如: ``` registry=http://private-npm-server.com/ strict-ssl=false //private-npm-server.com/:_authToken=your-auth-token-here ``` 上述配置中的 `_authToken` 字段用于身份验证;当私有仓库受保护时非常有用。而 `strict-ssl=false` 可能会在某些情况下帮助绕过 SSL/TLS 认证问题[^3]。 #### 对于 CNPM 或者其他定制化镜像站点的支持 由于提到使用了 cnpm 来作为国内加速器,在这种场景下可以直接利用已有的.cnpm域名或者IP代替官方资源路径。例如: ```bash pnpm config set registry https://r.cnpmjs.org/ ``` 注意这里假设 r.cnpmjs.org 是可用且稳定的中国区镜像站[^4]。 #### 解决 tarball URL 不正确的问题 针对可能出现的tarball URL错误情况,确保所引用的私有仓库支持正确的版本控制和打包格式非常重要。另外也要确认pnpmlist.json 中声明的依赖关系是否准确无误[^5]。 #### 自动同步外部模块到内部存储库 考虑到企业级应用的需求,可能还需要考虑定期将必要的第三方库从互联网同步回本地环境。此时可借助专门设计用来处理此类任务的工具和服务[^6]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值