nexus3搭建npm私服

介绍

    公司前端全是nodejs的,nodejs在install的时候往往是连接外网,或者是设置taobao源,即使是设置了taobao源,但是还是解决不了慢的问题,为此搭建了一个内部的npm私服,这里用google一下有很多都可以来进行搭建npm私服,然后也看到了nexus也可以来做,正好maven私服也是用的这个,都是3版本,为此选择了nexus来做npm的私服,和maven一套便于维护。

nexus安装

    不介绍,安装完成nexus后,在浏览器打开并进行登录,第一次安装登录nexus的默认用户admin,默认密码是admin123

1、创建repository

    Nexus Repository Manager 3 可以用于多种类型的包管理。此处我们要搭建的是npm包管理私服。登录在界面点击下图所示按钮。
img

  • 进入设置界面
    img

    上图中左面菜单有很多功能。可以在 Security 下的 Users 可以创建用户并设置用户权限,修改用户信息。Logging 下的 Log Viewer 可以查看运行日志。而本次配置主要用到了 Repository -> Repositories 和 Security -> Realms 两项

  • 首先在 Repositories 创建仓库

img

  • 接下来会进入到 Repositorty 的选择:(npm 有三种)
    img

  • 第一种:代理 npm 仓库

Proxying npm Registries可产看官方文档

    将公共 npm 服务器的资源代理缓存,减少重复下载,加快开发人员和CI服务器的下载速度。创建时选择 npm(proxy) ,只需填写 Name 和 Remote storage (公有库域名)即可。
img

    用于 上传自己的npm包 以及第三方npm包。同样的创建步骤,只不过选择的 仓库类型为 npm(hosted)。 只填写 Name 即可

img

    用于将多个内部或外部 npm 仓库统一为一个 npm仓库。被添加到 npm仓库组 中的 其他仓库内的包都能够通过该 npm仓库组 访问到。

    例如:可以新建一个npm仓库组将 上面两个刚刚创建的 npm 仓库都添加进去。这样可以通过这个 npm仓库组,既可以访问 公有npm仓库 又可以访问自己的 私有npm仓库。
    仓库类型为 npm(group),起一个名字 Name,然后选择需要添加到组里的 其他 npm 仓库。此处我选择的是 npm-kxl-external 和 npm-kxl-internal

img

    仓库都创建完毕了。接下来需要验证一下是否可用,在 Repositories 中点击创建的 仓库。可以查看该仓库的 URL。
在项目目录下创建 .npmrc 文件。文件内容为:

1
registry=http://172.21.16.90:8081/repository/npm-kxl-all/

然后随便安装一个 包 试试(日志级别设置为 info):

1
$ npm --loglevel info install react

img

如图。确实是从设置的 npm 私服下载的react。成功

发布到 npm 私服

除了从 npm 仓库安装依赖。我们还需要将公司内部的 代码打包 发布到 npm 的私服。这里没什么特殊的,就是需要设置一下 Nexus Repository Manager 的权限。这样才能使用 npm login 认证登录到我们的私服。

img

此处在 Realms 下。将 npm Bearer Token Realm 添加到 Active 列表内保存即可。
然后可以执行(登录 私有npm仓库):

1
2
3
4
5
npm login --registry=http://172.21.16.90:8081/repository/npm-kxl-internal/
Username: admin
Password:
Email: (this IS public) 1@qq.com
Logged in as admin on http://172.21.16.90:8081/repository/npm-kxl-internal/.

执行命令,提示填写账号密码和邮箱,验证通过后将会在 用户主目录下的 .npmrc 文件中插入一条 此仓库 url 和对应的 token。

img

在确保项目有 package.json 前提下,执行:

1
npm publish --registry=http://172.21.16.90:8081/repository/npm-kxl-internal/

错误解决

1
2
3
npm install
npm ERR! code E401
npm ERR! Unable to authenticate, need: BASIC realm="Sonatype Nexus Repository Manager"

需要登录nexus,勾上 Administration – Secturity – Anonymous 中的 Allow anonymous users to access the server。

至此,使用 Nexus Repository Manager 3 搭建 npm 私服结束。整体流程并不复杂,文档很详尽,直接读文档可能会遗漏一些东西。可以参考官方文档

nexus ldap配置

坚持原创技术分享,您的支持将鼓励我继续创作!
0%