乐趣区

用verdaccio搭建npm私服

sinopia 有坑,已经弃坑
使用 Sinopia 搭建私有 npm 仓库不能下载带有 @符号的包
幸好有一位大神 fork 了 sinopia,并且自己维护更新。github 地址 : verdaccio
verdaccio 的安装与 sinopia 一样。
参考地址:
npm 私服安装教程 – verdaccio 入门
使用 nexus 搭建
npm 私服
nexus 上搭建 npm 本地服务器
nexus 搭建 npm 私服
为什么需要搭建私有 npm
公司系统逐渐变多。不同的系统可能出现相同的功能,想到 java 有 Nexus 可以作为私服,npm 也一定有类似的东西。
所以选择了 sinopia
安装 node
下载地址:https://npm.taobao.org/mirror…
解压缩、配置 profile
[root@localhost node]# tar -zxvf node-v10.15.0-linux-x64.tar.gz
[root@localhost node]# vim /etc/profile
export NODE_HOME=/opt/node/node-v10.15.0-linux-x64
export PATH=$NODE_HOME/bin:$PATH
[root@localhost node]# source /etc/profile

验证
[root@localhost node]# node -v
v10.15.0
[root@localhost node]# npm -v
6.4.1
[root@localhost node]#

使用 npm 安装 sinopia
npm install -g sinopia

使用 npm 安装 pm2
npm install -g pm2

sinopia 的配置文件
#
# This is the default config file. It allows all users to do anything,
# so don’t use it on production systems.
#
# Look here for more config file examples:
# https://github.com/rlidwka/sinopia/tree/master/conf
#

# path to a directory with all packages
storage: ./storage //npm 包存放的路径

auth:
htpasswd:
file: ./htpasswd // 保存用户的账号密码等信息
# Maximum amount of users allowed to register, defaults to “+inf”.
# You can set this to -1 to disable registration.
max_users: -1 // 默认为 1000,改为 -1,禁止注册

# a list of other known repositories we can talk to
uplinks:
npmjs:
url: http://registry.npm.taobao.org/ // 默认为 npm 的官网,由于国情,修改 url 让 sinopia 使用 淘宝的 npm 镜像地址

packages: // 配置权限管理
‘@*/*’:
# scoped packages
access: $all
publish: $authenticated

‘*’:
# allow all users (including non-authenticated users) to read and
# publish all packages
#
# you can specify usernames/groupnames (depending on your auth plugin)
# and three keywords: “$all”, “$anonymous”, “$authenticated”
access: $all

# allow all known users to publish packages
# (anyone can register by default, remember?)
publish: $authenticated

# if package is not available locally, proxy requests to ‘npmjs’ registry
proxy: npmjs

# log settings
logs:
– {type: stdout, format: pretty, level: http}
#- {type: file, path: sinopia.log, level: info}

# you can specify listen address (or simply a port)
listen: 0.0.0.0:4873 //// 默认没有,只能在本机访问,添加后可以通过外网访问。

启动 sinopia
启动
$ sinopia
warn — config file – …..\AppData\Roaming\sinopia\config.yaml
warn — http address – http://localhost:4873/

如果能正常显示,说明安装成功。
使用 pm2 启动
当然,你也可以使用 pm2 或其他的守护进程进行管理
启动:
pm2 start `which sinopia`
或者 pm2 start sinopia

客户端使用
强烈推荐使用 nrm 来管理自己的代理。
安装 nrm
全局安装 nrm 可以快速修改, 切换, 增加 npm 镜像地址。
$ npm install -g nrm # 安装 nrm
$ nrm add XXXXX http://XXXXXX:4873 # 添加本地的 npm 镜像地址
$ nrm use XXXX # 使用本址的镜像地址

nrm 的其他命令 $ nrm –help # 查看 nrm 命令帮助 $ nrm list # 列出可用的 npm 镜像地址 $ nrm use taobao # 使用淘宝 npm 镜像地址

安装包

安装完成. 之后你通过 npm install 安装的包,sinopia 都会帮你缓存到本地了. 试一下吧。
mkdir test && cd test
npm install lodash # sinopia 发现本地没有 lodash 包, 就会从 taobao 镜像下载
rm -rf node-modules # 删除目录
npm insatll lodash # 第二次安装就会从缓存下载了, 速度很快

创建用户与发布包
创建新用户

确保自己已经切换到配置的代理
~ nrm ls npm —- https://registry.npmjs.org/ cnpm — http://r.cnpmjs.org/ taobao – http://registry.npm.taobao.org/ nj —– https://registry.nodejitsu.com/ rednpm – http://registry.mirror.cqupt…. npmMirror https://skimdb.npmjs.com/regi…
sinopia http://192.168.50.163:4873/

运行 npm adduser, 填写信息,注册账号。如果已经有账号,直接运行 npm login 即可。[root@localhost sinopia]# npm adduser –registry http://192.168.50.163:4873 Username: ipnunu Password: Email: (this IS public) ipnunu@qq.com Logged in as ipnunu on http://192.168.50.163:4873/.

运行 $ npm publish 发布新包。

参考文章
sinopia 官网介绍
使用 Sinopia 搭建私有的 npm 仓库
用 sinopia 搭建 npm 私服
使用 sinopia 搭建私有 npm 服务
使用 sinopia 搭建私有 npm 服务
用 sinopia 搭建内部 npm 服务
简介 PM2
使用 nrm 管理 npm 仓库
利用 npm 安装 / 删除 / 发布 / 更新 / 撤销发布包

退出移动版