nexus3部署npm hosted私服

centos部署nexus3

环境:jdk1.8nexus3

上传并解压nexus3,安装jdk并配置环境变量

vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_181
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib

执行生效环境变量命令 source profile

nexus3启动:

执行到该目录下/usr/local/packages/nexus-3.13.0-01/bin

路径:/usr/local/packages/nexus-3.13.0-01/
执行启动:路径/bin下
./nexus run & //有打印日志启动
./nexus start //无打印日志启动
./nexus stop 或者 kill -9 进程id //命令失效杀进程停止

Nexus部署npm私服

1.blobStores 创建存储库:npm-store

2.repositories 创建:npm-hosted仓库并复制npm源地址

3.本地配置关联npm源地址
npm config set registry 远程npm仓库地址
npm login

4.发布包到远程仓库
到含有package.json(private:false)工程目录 执行 npm publish (无法处理依赖关系,下载包不完整。)
npm支持直接 publish tgz压缩包的方式上传到私有库。
下载 node-tgz-downloader,用来下载依赖tgz文件;脚本会通过 packagelock.json锁定的依赖包版本下载相关联的依赖包)

全局安装:
npm install node-tgz-downloader -g

npm install 生成 node_modules 文件夹后到工程根目录执行命令 download-tgz package-lock package-lock.json 网络和境外服务器原因会失败且有可能下载0kb的压缩包,需要多执行几次。

发布tgz包到私有库:

shell脚本(整合tgz包到一个目录下)

find . -name '*.tgz' -exec cp -f {} ../tgz \;

该命令会把多目录下的.tgz压缩包复制到tgz目录下。

新建sh脚本

#!/bin/bash

PACKAGE_PATH=./tgz
REPOSITORY=http://xxxxx:8081/repository/npm-hosted/

# npm login --registry=$REPOSITORY

for file in $PACKAGE_PATH/*.tgz; do
 npm publish $file
done

脚本会同步的方式依次发布包,如遇到403可以考虑权限问题,最好用管理员账号发布。

node-sass安装失败处理:

在拉取node-sass包时,尽管内网已经有npm全部包,node-sass也会从git上拉xx_binding.node的一个二进制node文件,阅读源码后发现这个文件是识别当前sass版本及电脑系统和电脑32位还是64位来下载该二进制文件,getBinaryName方法返回了文件名称

    binaryName = [
      platform, '-',
      process.arch, '-',
      process.versions.modules
    ].join('');

    return [binaryName, 'binding.node'].join('_');

通过手动cmd输入可查看文件名(darwin-x64-83),

node -p "[process.platform,process.arch,process.versions.modules].join('-')"

darwin-x64-83_binding.node 就是最后完整文件名。

然后查看package.json中node-sass版本,通过 https://registry.npmmirror.co...版本号/文件名 来下载对应文件。

nexus上新建 raw类型hosted存储库(raw-hosted)和raw类型group存储库(raw-public)并设置读取权限。参考npm源下载地址新建node-sass/v4.14.1/目录并上传该二进制文件。完整路径(http://ip:port/repository/raw...)。

使用私服源首次npm install

分别指向私服源和二进制文件源目录,二进制文件站点(sass_binary_site)只需要指向到版本前面的分割目录即可,下载时会自动根据node-sass版本去对应目录下载对应文件。

npm config set registry http://ip:port/repository/npm...

npm config set sass_binary_site http://ip:port/repository/raw...

npm install

以上如果安装报错可以排查nexus设置的仓库权限问题,安装成功运行报错时,尝试清除npm缓存 npm cache clean -f

参考相关资料:
https://blog.csdn.net/lihongt...
https://blog.csdn.net/yougoul...
https://segmentfault.com/a/11...

你可能感兴趣的:(nexus3部署npm hosted私服)