用sinopia搭建私有npm服务

随着公司内部越来越多公用组件、模块的产生,搭建一个本地私有npm库显得非常的必要。

Sinopia 是一个零配置的私有的带缓存功能的npm包管理工具,使用sinopia,你不用安装CouchDB或MYSQL之类的数据库,Sinopia有自己的迷你数据库,如果要下载的包不存在,它将自动去你配置的npm地址上去下载,而且硬盘中只缓存你现在过的包,以节省空间。

1.安装Sinopia:

npm install -g sinopia

启动:

sinopia

使用pm2启动:

npm install -g pm2
pm2 start sinopia

访问:http://localhost:4873 (改过端口)

通过修改config.yaml文件,配置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 ////默认没有,只能在本机访问,添加后可以通过外网访问。

2.安装nrm:

nrm是 npm registry 管理工具, 能够查看和切换当前使用的registry。

npm install -g nrm

使用命令:

nrm list #列出可用的 npm 镜像地址
nrm add XXXXX http://XXXXXX:4873 #添加本地的npm镜像地址
nrm use XXXX #使用本址的镜像地址

3.验证:

通过nrm添加并切换到本地的npm镜像地址。

本地如果有可用来发布的模块可以直接用,本地没有,使用npm init根据提示创建一个。

初始化创建一个模块

npm init

如果需要登录才能publish则登录

运行npm adduser注册账号,如果已经有账号直接运行 npm login

登录成功时可通过npm whoami查看

执行发布:

npm publish

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>