centos部署nexus3
上传并解压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 就是最后完整文件名。
查看当前安装包tgz包 npm view http-server dist.tarball
然后查看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 view packname
使用私服源首次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
补充npm包下载方法2(解决包下载包0kb或者失败):
包同级目录新建write.txt
并修改包node-tgz-downloader
代码如下:
var arr = [];
const promises = tarballs.map(({ url, directory }, i, arr) => {
const position = `${i + 1}/${arr.length}`;
logger(['downloading'.cyan, position], url);
arr.push(url)
if((tarballs.length - 1) == i){
fs.writeFile('./xieru.txt',JSON.stringify(arr),function(err){
// 读取失败 err的值也是为空 null转换为布尔值还是false
if (err) {
return console.log(err+'写入失败的');
}
console.log('写入成功');
})
}
return _downloadFileWithRetry(url, join(baseDirectory, directory), position, 10);
});
同级目录新建index.html
<div id="app"></div>
<script type="text/javascript" src="./write.txt"></script>
<script type="text/javascript">
fetch('./write.txt')
.then(function(response) {
return response.json();
})
.then(function(myJson) {
let app = document.querySelector('#app');
myJson.map((item,i)=>{
let el = document.createElement('a');
el.innerText = item;
el.href = item;
app.appendChild(el).appendChild(document.createElement('p'))
})
});
</script>
运行html全选复制下载迅雷粘贴下载。
参考相关资料:
https://blog.csdn.net/lihongt...
https://blog.csdn.net/yougoul...
https://segmentfault.com/a/11...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。