我们在开发中一般会把npm源换成淘宝源(https://registry.npm.taobao.org)来加速下载软件包,有些公司也有做自己内部搭建的npm源,可以将一些内部包发布在其中,调用起来更加方便,那么可不可以做一款自己的npm源,将我们自己鼓捣的一些奇怪软件包发进去呢?vadaccio是一款零配置的个人私有npm源,让搭建一个私有源变得非常简便!使用它的docker镜像来安装更加便捷,我们需要准备的只有一台服务器,下面是搭建源的步骤。
启动vadaccio服务
首先拉取镜像:
docker pull verdaccio/verdaccio:4
然后后台运行镜像:
docker run -d --rm --name verdaccio -p 4873:4873 verdaccio/verdaccio
运行后可以在localhost:4873
看到如下图所示的管理界面。
更改nginx配置
默认vadaccio服务是跑在服务器本地的4873端口,我们通过外网不能直接访问,所以需要修改一下nginx配置:
server {
listen 4873;
server_name verdaccio;
location / {
# proxy to verdaccui
proxy_pass http://localhost:4873;
}
}
然后重载nginx配置即可nginx -s reload
,现在访问服务器的4873端口即可看到上面所示的管理界面。
发布软件包
类似发布npm包,我们需要初始化并制作一个npm包,其中要在根目录的package.json中填写一些关键的字段:
- name: 发布软件包的名称
- version: 版本信息
- author: 作者信息
- repository: 仓库信息
- keywords: 搜索包的关键字
- homepage: 包的主页,一般是软件主页或者导向readme
例如:
{
"name": "copper-screw",
"version": "0.0.1",
"description": "useful skrew-like functions and classes",
"main": "lib/index.js",
"scripts": ...
"repository": {
"type": "git",
"url": "..."
},
"keywords": [
"utility"
],
"author": "kovarxu",
"license": "MIT",
"bugs": {...},
"homepage": "https://github.com/kovarxu/screw#readme",
"devDependencies": {...}
}
准备工作做好后就可以开始发包,首先添加一个用户:
npm adduser --registry http://xxx:4873/
运行后会提示注册一个新用户,按照提示输入账号密码即可。接下来就可以使用publish发布:
npm publish --registry http://xxx:4873/
现在点击界面进去软件包,就可以看到详情了(图中是发了三次包的结果)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HRedRR62-1629035953376)(http://106.53.91.104/static/20201220/2.png)]
验证
然后找一个项目,尝试安装一下包:
npm i -S copper-screw --registry http://xxx:4873/
可以看到安装成功了
当然如果去掉registry后缀,默认从cnpm源下载,则会提示软件包找不到,毕竟我们还没发到其他源上,这里就不赘述了,可以自行尝试。