欢迎关注我的头条号:Wooola,专注于Java、Golang、微服务架构,致力于每天分享原创文章、快乐编码和开源技术。
前言
最近前端项目使用了jenkins构建前端项目,基于sinopia私服库管理前端lib库,但是预生产环境不能访问外网,导致jenkins在构建前端项目时,sinopia无法下载第三方lib包。楼主没办法,只能本机上搭建sinopia私服环境,把前端项目所有依赖得lib包全部下载到本地。然后通过xftp工具上传到预生产环境的sinopia的\sinopia\storage目录下。
环境准备
1、node v12.4.0
2、npm 6.9.0
3、python 2.7.14
安装
sinopia安装命令很简单,先设置国内私服镜像地址,楼主推荐用:cnpmjs,然后把-g参数加上设置成全局的
npm set registry http://registry.cnpmjs.org npm install -g sinopia
如果安装不报错,会提示all packages installed(大约有199个lib被安装)
在浏览器输入:http://localhost:4873/,如果能出来sinopia界面,表示安装成功了。
对外访问
目前装好的sinopia环境只能对本机访问,显然时不满足要求的,所以需要在sinopia/config.yaml的配置文件末尾添加:listen: 0.0.0.0:4873
sinopia说明
默认的安装路径在:C:\Users\Wooola\AppData\Roaming\npm\node_modules下。
其私服lib库地址在本机的:C:\Users\Wooola\AppData\Roaming\sinopia\storage目录下
私服镜像
sinopia默认的lib下载地址是:http://registry.npmjs.org/,如果想用国内可以在sinopia的config.yaml修改
C:\Users\Wooola\AppData\Roaming\sinopia\config.yaml uplinks: npmjs: url: http://registry.cnpmjs.org
楼主使用的是cnpmjs的,挺好用,下载速度快。当然也可以改成淘宝的私服库地址: http://registry.npm.taobao.org/
sinopia使用
在使用sinopia之前,楼主推荐使用nrm来管理npm代理,nrm更方便切换npm镜像地址。
nrm安装
npm install -g nrm # 安装nrm nrm add sinopia http://192.168.3.107:4873 # 添加新搭建的npm私有仓库地址 nrm use sinopia #默认使用sinopia私服库
添加用户:root/123
C:\Users\Wooola>npm adduser Username: root Password: 123 Email: (this IS public) a@qq.com Logged in as root on http://192.168.3.107:4873/.
问题
在windows,删除sinopia安装目录node_modules里的fs-ext和crypt3相关的包,否则执行npm添加用户和登陆验证时会报错。包括:.0.2.0@crypt3,.0.6.0@fs-ext,crypt3和fs-ext以及sinopia-htpasswd\node_modules下的crypt3和fs-ext
启动sinopia
C:\Users\Wooola>sinopia warn --- config file - C:\Users\Wooola\AppData\Roaming\sinopia\config.yaml warn --- http address - http://localhost:4873/
其中 http://localhost:4873/位sinopia私服库页面地址
发布npm包
1、发npm包之前,先用root用户登录
C:\Users\Wooola>npm login Username: root Password: Email: (this IS public) a@qq.com Logged in as root on http://localhost:4873/.
2、创建前端工程:sinhello
mkdir sinhello cd sinhello npm init
在npm init时,会提示你输入包名称、版本、入口js等,直接回车默认就行了。
最终生成的目录结构
3、发布到sinopia私服