选择搭建方案
一、使用 Sinopia
由于 Sinopia 作者已经停止更新维护了,因此此方案 pass 掉
二、使用 cnpmjs.org
此方案相比较下面的第三种方案比较麻烦,而且 cnpm 已经不维护了,有很多问题都得不到解决,因此此方案也 pass 掉
三、使用 verdaccio
这是 sinopia 的一个分支,6 种多语言文档详细齐全,搭建方法简单粗暴
1、安装 verdaccio
全局安装:npm i -g verdaccio
2、启动 verdaccio
启动命令:verdaccio
参数:
- –listen 端口号
- –config 配置文件路径
栗子:
verdaccio --listen 4000 --config ~./config.yaml
默认启动端口:4873,因此访问 http://localhost:4873 即可看到下面的内容
相关配置
再来看看我们启动了 verdaccio 后控制台的相关输出
- warn — config file,这里告知我们配置文件的路径,我们可以去修改配置文件,配置文件说明如下:
# 存放包的缓存目录
storage: /Users/xxx/.local/share/verdaccio/storage
# 插件目录
plugins: ./plugins
# 配置 WEB UI 界面
web:
# 默认开启 web 服务,如果想要关闭 web 服务,则设置 enable:false 即可
# enable: false
# logo : logo.png
# web 页面的标题
title: Efun FE NPM By Verdaccio
# 验证信息
auth:
# 用户信息存储目录
htpasswd:
file: ./htpasswd
# 默认为 1000,改为 -1,禁止注册
# Maximum amount of users allowed to register, defaults to "+inf".
# You can set this to -1 to disable registration.
#max_users: 1000
# 公有库配置 a list of other known repositories we can talk to
uplinks:
npmjs:
url: https://registry.npmjs.org/
# 配置权限管理
packages:
'@*/*':
# 表示哪一类用户可以对匹配的项目进行安装
# 三种身份:$all 表示所有人都可以执行对应的操作,$authenticated 表示只有通过验证的人可以执行对应操作,$anonymous 表示只有匿名者可以进行对应操作(通常无用)access: $all
# 表示哪一类用户可以对匹配的项目进行发布
publish: $authenticated
# 代理,表示没有的仓库会去这个 npmjs(又指向 https://registry.npmjs.org/ , 就是上面的 uplinks 配置)里面去找
proxy: npmjs
'**':
access: $all
publish: $authenticated
proxy: npmjs
# You can specify HTTP/1.1 server keep alive timeout in seconds for incomming connections.
# A value of 0 makes the http server behave similarly to Node.js versions prior to 8.0.0, which did not have a keep-alive timeout.
# WORKAROUND: Through given configuration you can workaround following issue https://github.com/verdaccio/verdaccio/issues/301. Set to 0 in case 60 is not enought.
server:
keepAliveTimeout: 60
# 监听的端口 , 重点, 不配置这个, 只能本机能访问
listen: 0.0.0.0:4873
# To use `npm audit` uncomment the following section
middlewares:
audit:
enabled: true
# 日志输出设置
logs:
- {type: stdout, format: pretty, level: http}
#- {type: file, path: verdaccio.log, level: info}
3、切换 registry 源
- 直接更换所有 npm 下载源:
npm set registry http://localhost:4873/
- 只对本次装包指定下载源:
npm install --registry http://localhost:4873
- 推荐使用 nrm
npm i nrm -g
nrm list | nrm ls
nrm add [name] [源 url]
nrm use [name]
nrm del [name]
4、账号管理
- 创建账号:
npm adduser --registry http://localhost:4873/
- 登陆:npm login(需要先切换到对应 npm 源)
- 退出:npm logout
- 查看当前用户:npm who am i
5、发布包
npm publish
-
升级版本号
- 升级补丁版本号:
npm version patch
- 升级副版本号:
npm version minor
- 升级主版本号:
npm version major
- 升级补丁版本号:
-
版本号相关说明,npm version 后面参数说明:
- patch:小变动,比如修复 bug 等,版本号变动 v1.0.0->v1.0.1
- minor:增加新功能,不影响现有功能,版本号变动 v1.0.0->v1.1.0
- major:破坏模块对向后的兼容性,版本号变动 v1.0.0->v2.0.0
使用 pm2 部署到服务器
运行命令
- 启动:
pm2 start verdaccio
- 停止:
pm2 stop verdaccio
- 重启:
pm2 restart verdaccio
- 删除应用:
pm2 delete verdaccio
- 查看日志:
pm2 logs verdaccio
pm2 配置文件启动
-
package.json
文件中定义script:start
为:verdaccio
- pm2 文件(ecosystem.json 为例子)配置如下,主要关注 script,args 两个属性,其余根据自己的需求来配置:
{
"apps": [
{
"name": "verdaccio-dev",
"max_memory_restart": "300M",
"script": "npm",
"args" : "start",
"out_file": "logs/verdaccio-out.log",
"error_file": "logs/verdaccio-error.log",
"merge_logs": true,
"log_date_format": "YYYY-MM-DD HH:mm Z",
"exec_mode": "fork",
"env": {"NODE_ENV": "development"},
"env_production": {"NODE_ENV": "production"}
}
]
}
-
package.json
文件中定义script:prod
为:pm2 start ecosystem.json --env production
,然后输入npm run prod
,verdaccio 就如期在 pm2 托管中启动了~