背景

  • 网上很多Nexus搭建npm或maven私库都是在有网络的环境下搭建的,而关于在离线服务器上搭建私库的文章却很少。
  • 我们公司部门需要搭建一个专属于自己部门的npm私库,公司内网肯定是不能连外网的,所以需要离线搭建npm私库。
  • 在网上查到的搭建npm私库的方式有两种:Nexus和verdaccio。其中推荐使用verdaccio工具的更多,但经过我两种方式都离线搭建过一次的经验来看,我个人更推荐Nexus的,因为它方便多了,思路也很好理解,所以本文的内容是以Nexus来搭建离线npm私库,并以上传下载vue开发环境示例。
  • 环境:一台可联网的win10,一台离线win10(连接公司内网,部署私库的目标机)。

搭建思路

  1. 先用联网win10安装Nexus,然后启动Nexus,创建代理npm仓库,这个代理仓库源设置为淘宝的npm镜像源(在此之前两台win10电脑均已安装了相同版本的node.js),用npm以私库地址全局下载vue、vue-cli,此时在私库中已有vue、vue-cli组件了,然后切换到Nexus的工作目录中,用npm以私库地址下载vue、vue-cli,把Nexus工作目录打包成zip文件(sonatype-work.zip)。现在,这台联网电脑的操作已完成。
  2. 然后是离线win10的操作步骤:把Nexus安装包和sonatype-work.zip拷贝到离线电脑里,安装Nexus,然后解压sonatype-work.zip覆盖Nexus的工作目录,启动Nexus后发现私库已成功转移到了这台离线电脑里,设置npm下载源为私库地址,并下载vue、vue-cli成功。

好的,思路存在,开始操作

搭建流程

1. 联网电脑

1.1. Win10安装启动Nexus并创建npm私库
  • Nexus下载地址:https://help.sonatype.com/repomanager3/product-information/download/download-archives—repository-manager-3
  • npm配置远程仓库地址 npm离线仓库_离线

  • 这个zip文件解压即完成安装,解压后,有两个目录:
  • npm配置远程仓库地址 npm离线仓库_离线_02

  • 其中nexus-3.37.3-02是Nexus的安装目录,sonatype-work是Nexus的默认工作目录,所有私库都存放在这个工作目录中,可以手动修改的,我就用默认了 。
  • 进入安装目录下的bin目录
  • npm配置远程仓库地址 npm离线仓库_npm_03

  • 其中nexus.exe就是Nexus的启动文件,在当前目录下按住Shift键然后鼠标右键打开Power shell窗口,执行命令.\nexus.exe /run启动Nexus。
  • npm配置远程仓库地址 npm离线仓库_离线_04

  • 在浏览器中打开localhost:8081,第一次登录admin时,会提示密码在某个文件里(忘截图了),用记事本打开该密码文件,复制里面的内容即可,登录上后会让你修改密码,修改后记住就行。
  • 创建npm私库: 私库分三种类型:proxy、host、group。
  • proxy:代理外部npm注册表,目的是为了减少开发人员和CI服务器的重复下载量并提高下载速度
  • host:具有npm格式的托管存储库,它是个私人npm注册表,可用于上传您自己的软件包以及第三方软件包
  • group:通过创建一个新的npm(组),将多个代理和托管存储库的聚合内容公开为一个URL到npm和其他工具。

我只创建了proxy这一种私库。

npm配置远程仓库地址 npm离线仓库_ci_05

找到该私库的地址:

npm配置远程仓库地址 npm离线仓库_ci_06

npm配置远程仓库地址 npm离线仓库_npm配置远程仓库地址_07

1.2. 下载npm包(vue、vue-cli)到私库中
  1. 打开命令行工具,查看自己的npm下载源:
npm config get registry
# 我的输出为https://registry.npm.taobao.org/,这是淘宝npm镜像源
  1. 这里用刚建好的私库下载vue、vue-cli。 有两种方式,一种是修改npm下载源为私库地址,另一种是指定下载源方式下载。
  • 第一种方式:
# 修改npm下载源为私库地址
npm config set registry "http://localhost:8081/repository/npm-proxy/"
# 然后直接下载
npm install -g vue
npm install -g vue-cli
  • 第二种方式:
# 指定下载源地址下载
npm --registry="http://localhost:8081/repository/npm-proxy/" install -g vue
npm --registry="http://localhost:8081/repository/npm-proxy/" install -g vue-vue
  1. 查看私库发现已有vue、vue-cli了
1.3. 将npm私库的包下载到本地(默认是Nexus工作目录)
  1. 进入Nexus的工作目录(默认的工作目录在Nexus安装包同级的sonatype-work目录下),按住Shift键右键打开PowerShell,下载vue、vue-cli。 这里你们需要注意的是,如果在第1.2.步骤中没有设置npm源为私库地址,你们的下载命令还是要指定下载源为私库地址:
npm --registry="http://localhost:8081/repository/npm-proxy/" install vue
npm --registry="http://localhost:8081/repository/npm-proxy/" install vue-vue
  1. 此时在Nexus的工作目录下,可以看到新增加了一个node_modules目录和一个package-lock.json文件,这两个文件中存放的就是vue环境。
1.4. 打包用于离线电脑的数据
  1. 关闭Nexus命令行窗口(不然下面的压缩操作执行不了),将该工作目录下的所有文件全部压缩为一个sonatype-work.zip文件。

2. 离线电脑

2.1. Win10安装Nexus
2.1. 转移私库到离线电脑上
  1. 安装完Nexus后先别启动,把sonatype-work.zip里的文件覆盖该离线电脑上Nexus工作目录下所有文件。
  2. 然后启动Nexus后,进入localhost:8081发现私库已经成功转移到离线电脑上了
2.3. 私库npm包下载
  1. 设置npm下载源为私库地址
npm config set registry "http://localhost:8081/repository/npm-proxy/"
  1. 下载:
# i就是install的缩写
npm i -g vue
npm i -g vue-cli

参考

  • Nexus官网
  • verdaccio官网
  • 前端nexus3 Yarn离线部署npm仓库
  • npm源管理

PS:最好不要用cnpm