Nexus下构建npm私有仓库

313 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

1、 点击左侧菜单栏Repositories,我们可以看到很多已经配置好的仓库,一般只使用开源jar就够用了,如果需要建立自定义仓库,点击Create repository创建新的仓库

image.png

2、 首先我们要创建几个常用的代理源,用于常用开源npm模块的拉取

image.png

3、 添加代理(Cache统一设置为200天 288000)

image.png

image.png

4、重复第3步设置

registry.npm.taobao.org/

registry.npmjs.org

5、 创建npm-hosted ,用于发布个人开发的npm组件

image.png

image.png

image.png

6、 创建npm-public ,用于把几个仓库组组合在一起公开连接使用。

image.png

image.png

说明

默认仓库说明

npm-proxy:可以代理npmjs和淘宝镜像

npm-hosted:用于上传、自定义和个人开发的npm组件

npm-public:仓库分组,把几个仓库组组合在一起使用。

仓库类型

Group:这是一个仓库聚合的概念,用户仓库地址选择Group的地址,即可访问Group中配置的,用于方便开发人员自己设定的仓库。maven-public就是一个Group类型的仓库,内部设置了多个仓库,访问顺序取决于配置顺序,3.x默认Releases,Snapshots, Central,当然你也可以自己设置。

Hosted:私有仓库,内部项目的发布仓库,专门用来存储我们自己生成的jar文件

3rd party:未发布到公网的第三方jar (3.x去除了)

Snapshots:本地项目的快照仓库

Releases: 本地项目发布的正式版本

Proxy:代理类型,从远程中央仓库中寻找数据的仓库(可以点击对应的仓库的Configuration页签下Remote Storage属性的值即被代理的远程仓库的路径),如可配置阿里云maven仓库

Central:中央仓库

Apache Snapshots:Apache专用快照仓库(3.x去除了)

修改本地Npm连接源

打开Repositories,找到创建的分组npm-public,点击Copy,复制连接源地址

image.png

npm config set registry http://172.16.92.74:9998/nexus/repository/npm-public/

发布自己的npm组件到私服

登录私服

npm login –registry=http://172.16.92.74:9998/nexus/repository/npm-hosted

发布npm组件

要发布的模块,必须保证在根目录下有package.json文件,否则会报错

npm publish –registry=http://172.16.92.74:9998/nexus/repository/npm-hosted/

发布npm组件

要发布的模块,必须保证在根目录下有package.json文件,否则会报错

npm publish –registry=http://172.16.92.74:9998/nexus/repository/npm-hosted/

批量发布脚本:

#!/bin/bash
for module in /opt/node_modules/*
do
	if  test -d $module
	then
		if  [ -f "$module/package.json" ];then
			echo $module
			cd $module
			npm publish
		else
			for sub in $module/*
			do
				if test -d $sub
				then
					if  [ -f "$sub/package.json" ];then
						echo $sub
						cd $sub
						npm publish
					fi
				fi
			done
		fi
	fi
done```