最近为公司项目写好的creator 3.x框架准备投入使用,框架封装成npm包的形式,并非以cocos插件形式实现。
以前的使用方式是创建一个svn库,其他人checkout下来,package.json配置成file引入
package.json:
{
"name": "cocos_framework_demo",
"creator": {
"version": "3.8.5"
},
......
"dependencies": {
"framework": "file:../cocos_framework_module"
}
}
然而这种方式会有个问题:
多个项目都会直接引用到同一个框架库目录(持续更新到最新),但是框架在迭代过程中必定会有一些修改难以兼容旧版本,否则框架只会变成屎山。
部分用到旧版本的项目由于各种原因(已上线,人员精力有限)不好做适配修改,这部分项目就需要继续使用旧版本框架。
显然这种情况下用svn管理不太合适,我们需要一个可以兼容多版本的管理工具。
稍等…这不就是npm吗?
于是我们就有了一个需求,搭建私有npm源。
在网上搜寻了一番,综合功能性和易用性,最终决定使用 Verdaccio 进行搭建
- Verdaccio简介
Verdaccio,是一个轻量级的 npm 私有仓库的开源解决方案。npm是一个基于http的协议,用来存放软件包并且维护版本和依赖,利用 http 提供的 url路径 来对软件包进行增删改查。所以 Verdaccio 这款软件的核心就是实现 npm协议。
Verdaccio 有一个内置的数据库来存放所有的 npm 包,除此之外它还有一套默认的鉴权机制:htpasswd。htpasswd鉴权是通过htpasswd文件来存放所有的 npm用户,鉴权、添加/删除的时候通过对文件的读写来实现。
Verdaccio 提供了上行链路功能, 安装 Verdaccio 仓库中不存在的包时,可以配置向上游仓库下载。
Verdaccio 还提供了强大的身份认证系统。
- 先给总结,看下是否适合您
Verdaccio可以直接 npm install 安装,window,linux 皆可运行。
配置简单,可以单独配置访问,发布,删除权限
可以设置上游npm源(如taobao镜像等),当需要拉取仓库中不存在的库时,会从上游仓库下载并且缓存到本地
看到这里,我相信你的需求应该跟我一样,那么我们手把手开始了~
以下操作皆在windows下执行,linux下也一样,如有差异会特殊说明
1.安装verdaccio
npm i -g verdaccio
2.启动verdaccio
控制台运行
verdaccio
出现上图所示日志 说明verdaccio已经成功启动
留意上图标记处
config file - C:\Users\gotech\AppData\Roaming\verdaccio\config.yaml
这个文件是verdaccio的配置文件,我们记住这个文件路径。
3.修改verdaccio配置
用编辑器打开上面的配置文件
我们只需要修改几个关键配置
config.yaml:
- storage:库存储路径,windows下建议修改这个,否则默认路径在c盘会占用不少c盘空间
- uplinks:上游库地址,建议修改为国内的源(如taobao
https://registry.npmmirror.com/),访问速度更快
- listen:监听端口,允许其他人访问
至此配置大功告成,我们关掉之前运行的窗口重新运行verdaccio让配置生效
在需要访问这个私有库的电脑用浏览器打开 http://私有库地址:4873
如果看到这个页面,那么恭喜你,你的私有仓库已经成功搭建!只是暂时空空如也~
4.切换npm源
在需要访问这个私有仓库的电脑设置npm源
npm config set registry http://私有仓库地址:4873
5.创建用户,设置权限
我们的需求是任何可以访问私有仓库的人都可以使用我们的私有库,但是只有共和国最优秀的人才才能发布和删除私有库,因此在发布我们的私有库之前,还有很重要的一步,就是创建用户,和设置权限。
- 创建用户
控制台输入npm adduser,按照提示输入帐号,密码,邮箱即可完成帐号创建
- 设置权限
帐号创建完毕后我们打开verdaccio的配置文件,找到packages 字段,
修改publish(发布)和unpublish(删除) 为我们刚才创建的帐号(可以添加多个,用空格隔开)
- 重启verdaccio
6.发布库
回到我们需要发布的库目录,编辑package.json帮我们的库取个霸气外漏的名字(因为要发布,不能太随意)
package.json:
在这个目录打开控制台
-
执行
npm login用刚才创建的账号密码按照提示登录 -
执行
npm publish把库发布到私有仓库
发布完毕后我们到后台 http://私有仓库地址:4873 刷新一下
优雅,霸气,无须多言。
至此我们的私有库已经成功发布,使用方式跟常规的库一样,名称,版本就是package.json设置好的name和version
7.后台运行verdaccio
上一秒还沉浸在成功搭建私有仓库的你,可能下一秒就会发现运行verdaccio的窗口不能关掉,否则进程也会关掉
显然这也不符合我们优雅的定位,借助 pm2 我们可以后台运行verdaccio
pm2 是一个进程管理工具,可以用它来管理你的node进程,并查看node进程的状态
关于 pm2 这里不展开详细介绍,有兴趣的可以自行搜索相关资料,本文只作简单的安装和使用介绍
-
安装 pm2
npm install pm2 -g -
使用 pm2 运行verdaccio
pm2 start verdaccio
- 执行
pm2 list查看是否成功运行
windows下需要注意,直接执行
pm2 start verdaccio可能会报错,需要指定verdaccio具体路径
pm2 start C:\Users\gotech\AppData\Roaming\npm\node_modules\verdaccio\bin\verdaccio
8.其他
回到我们的开头,注意看原来的用法
package.json:
"dependencies": {
"framework": "file:../cocos_framework_module"
}
如果我们改为使用私有仓库里的库,那么正常应该改为
"dependencies": {
"gotech-cocos-3x": "^1.0.0"
}
但是我们原来的名称叫做framework,在代码里面的用法也是 import * from "framework"
我们不希望在代码里面看到那个霸气外漏的名字,框架就简单的叫做框架就好。
那么我们可以用这种方式配置别名
"dependencies": {
"framework": "npm:gotech-cocos-3x@^1.0.0"
}
大功告成,优雅,实在优雅~









