一、背景:
因公司网络要求,研发人员开发的代码再进行构建时需要使用到互联网的一些包,但是这些包每次构建的时候都需要从外网下载下来,比较耗时,同时因为护网安全等规范要求,所以在公司内部部署一套nexus私库用于存放maven编译和nodejs编译所需的一些包。
二、安装nodejs环境:
因为这次上传时通过npm publish的方式上传的,所以是需要部署一个nodejs环境。
安装gcc依赖环境:
[root@localhost ~]# yum install gcc gcc-c++
安装nodejs服务:
[root@localhost ~]# yum install -y nodejs
注:这里是不需要启动nodejs服务的,直接去验证nodejs环境即可。
[root@localhost ~]# node -v
v8.9.4
[root@localhost ~]# npm -v
5.6.0
注:到这里就完成了nodejs环境的部署工作了。
三、验证上传tgz包到nexus私库:
设置nexus私库地址:
[root@localhost ~]# npm config set registry http://192.168.6.181:8989/repository/jh-prod-hosted/
注:这里需要注意一下这个nexus地址是能上传tgz包到地址,并且这个私库的format是npm的,切记,切记。
登入到nexus私库上:
[root@localhost ~]# npm adduser -registry http://192.168.6.181:8989/repository/jh-prod-hosted/
Username: admin
Password:
Email: (this IS public) changeme@yourcompany.com
Logged in as admin on http://192.168.6.181:8989/repository/jh-prod-hosted/.
测试上传单个tgz包:
有两种方式上传tgz包
方式一:
[root@localhost ~]# npm publish -registry http://192.168.6.181:8989/repository/jh-prod-hosted/ functional-red-black-tree-1.0.1.tgz
+ functional-red-black-tree@1.0.1
方式二:
[root@localhost ~]# npm publish functional-red-black-tree-1.0.1.tgz
+ functional-red-black-tree@1.0.1
两种方式都可以,根据个人习惯选择,建议选择方式二的方式操作。
四、批量上传tgz包至nexus私库:
批量的方式,就是find符合要求的tgz包,然后通过npm publist方式上传。
命令如下:
find . -type f -name "*.tgz" | sed "s|^\./||" | xargs -I '{}' npm publish {} 2>&1 | tee -a npm.log
实际自行效果如下:
[root@localhost npm-old]# find . -type f -name "*.tgz" | sed "s|^\./||" | xargs -I '{}' npm publish {} 2>&1 | tee -a npm.log
+ @ant-design/colors@3.2.2
+ @ant-design/icons-vue@2.0.0
+ @ant-design/icons@2.1.1
+ @antv/adjust@0.1.1
+ @antv/attr@0.1.2
+ @antv/component@0.3.10
+ @antv/coord@0.1.0
+ @antv/g@3.3.6
+ @antv/g@3.4.10
........
最后上传完成之后去nexus私库里查看即可。
到此就可以使用nexus私库里的npm的tgz包里。