如何通过pm2与Verdaccio搭建并使用私有npm库?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2043个文字,预计阅读时间需要9分钟。
目录+前言+一个通常私有的npm仓库有以下几种实现方法:- 方案一:使用GitHub仓库作为私有npm仓库- 方案二:使用NPM Enterprise- 方案三:使用Verdaccio
下面对比各个方案:- 方案一:简单易用,但可能需要额外的GitHub账号和费用- 方案二:功能强大,但成本较高- 方案三:灵活且成本较低,适合中小型团队
为什么选择Verdaccio?- 安装简单- 配置灵活- 成本低
安装:
1.安装Node.js
2.安装Verdaccio
修改配置:
1.编辑配置文件
2.设置仓库权限
配置文件:
- verdaccio.config.yaml权限控制:- 使用用户认证和权限管理
部署:- 部署到服务器- 使用Docker部署- 使用pm2部署
管理npm仓库:- 使用Verdaccio的Web界面管理仓库
目录
- 前言
- 一般私有化的npm仓库有以下几种方法实现:
- 下面对各个方案进行一个粗浅的对比:
- 为什么选用Verdaccio?
- 安装
- 修改配置
- 配置文件
- 权限把控
- 部署
- docker部署
- pm2部署
- 管理npm仓库源
- npm包发布
- 注册
- 登录
- 发布
- 删除
前言
最近开会的时候讨论到前端组件库搭建,因为需要多人协作,使用npm link等都比较麻烦,且当业务规模较大了之后,我们一般会有自己的脚手架,自己的全局工具包等等。其中可能包含了自身的业务代码不能公开,因此我们都需要一个私有化的npm仓库。
一般私有化的npm仓库有以下几种方法实现:
- 通过npm购买私有服务
- 通过git直接引用
- 通过开源项目直接搭建,例如cnpm、verdaccio、sinopia等
下面对各个方案进行一个粗浅的对比:
- 官方私有npm服务:团队版$7/人/月这个价格就已经直接劝退,且不说npm在国内的网络情况不容乐观。
- 直接安装git代码:直接通过npm install 引入对应git代码确实有一定的便利性,但是当全局包多了之后不便于维护且权限难以管理
- sinopia:基于Node.js实现的一个开源npm库,年久失修。最近一次提交是6年前,直接放弃。
- cnpm:阿里出的npm私有方案,权限控制较为全面但是配置复杂,需要自己搭建mysql之类的数据库存储。
- verdaccio:基于sinopia继续开发,目前维护很频繁而且配置简单,可以快速搭建。
为什么选用Verdaccio?
verdaccio.org/
先跟大家吐个槽,其实我本来是想用sinopia搭建的私服,也知道大家也都倾向于sinopia来搭,毕竟它出道比较早,知名度比较高,但是sinopia的作者几年前就已经停止了对sinopia的维护和升级,不信大家可以自己去GitHub上看,上次更新真的停留在了几年前,唉,然后真是留了一堆坑,所幸不是没人管,只是有一群人又出了一个sinopia的fork,也就是sinopia的分支,而且还起了个洋气的意大利名verdaccio ,但是verdaccio 确实是正在维护的,我查了最近一次更新还是在2天前,这帮人还是挺勤快的,造福了大家啊~ 而且也比较好用,我用sinopia搭的时候填的一堆坑在verdaccio 这压!根!不!存!在!真是绝望啊,为啥我没有早点发现它。这里是verdaccio 在github的源码地址,大家想深入了解最好还是去看看源码和详细介绍。话不多说下面正式开始verdaccio的搭建。
安装
Verdaccio 的安装启动过程较为简单。首先是全局安装 Verdaccio:
npm i -g verdaccio
然后,在终端中输入 verdaccio 命令启动 Verdaccio:
接着 Verdaccio 会在终端中输出提示,输出它的配置文件位置、启动的服务地址等信息:
默认 Verdaccio 启动的服务都会在 4873 这个端口,在浏览器中打开这个地址我们就会看到 Verdaccio 搭建的私有库 npm 的界面:
修改配置
虽然,安装和启动好了 Verdaccio。但是,由于 Verdaccio 默认的配置和我们生产的需求不一致,所以我们需要修改一下 Verdaccio 的配置。
在生产环境下,私有 npm 库需要具备以下 3 个功能:
- 支持对 npm 包的搜索
- 严格的权限把控,npm 包的访问只能是已注册的用户。并且在一些场景下,需要删除用户
配置文件
npm i -g verdaccio
# 存放软件所有软件包的目录 storage: ../storage # 存放所有插件的目录 plugins: ../plugins web: # 网站Title title: Verdaccio # 禁用Gravatar头像 # gravatar: false # 排序方式 asc|desc # sort_packages: asc # 是否启用暗黑模式 # darkMode: true # logo地址 # logo: somedomain/somelogo.png # favicon地址 # favicon: somedomain/favicon.ico | /path/favicon.ico # i18n翻译配置 # i18n: # 可用列表见:github.com/verdaccio/ui/tree/master/i18n/translations # web: en-US auth: htpasswd: file: ./htpasswd # 最大注册用户数,默认为 "+inf". # 可用通过设置为-1禁止注册 # max_users: 1000 # 上游npm库,这里可用设置为淘宝 uplinks: npmjs: url: registry.npmjs.org/ packages: # 作用域包 '@*/*': # 允许所有人访问 access: $all # 注册用户可访问 publish: $authenticated # 注册用户可访问 unpublish: $authenticated proxy: npmjs '**': # 默认情况下所有用户 (包括未授权用户) 都可以查看和发布任意包 # 你可以指定 用户名/分组名 (取决于你使用什么授权插件,默认的授权插件是内置的 htpasswd) # 访问权限有三个关键词: "$all", "$anonymous", "$authenticated" # $all 表示不限制,任何人可访问; # $anonymous 表示未注册用户可访问; # $authenticated 表示只有注册用户可访问 access: $all # 允许所有注册用户发布/撤销已发布的软件包 # (注意:默认情况下任何人都可以注册) publish: $authenticated unpublish: $authenticated # 如果私有包服务不可用在本地,则会代理请求到'npmjs' proxy: npmjs # 您可以指定传入连接的HTTP /1.1服务器保持活动超时(以秒为单位)。 # 值为0会使{地址}:4873/ # 查看现有的npm源 $ nrm ls npm ---------- registry.npmjs.org/ yarn --------- registry.yarnpkg.com/ tencent ------ mirrors.cloud.tencent.com/npm/ cnpm --------- r.cnpmjs.org/ taobao ------- registry.npmmirror.com/ npmMirror ---- skimdb.npmjs.com/registry/ * verdaccio ---- {地址}:4873/ # 设置npm源 $ nrm use verdaccio
npm包发布
注册
# 注册用户,这里因为方便演示,所以没有关闭注册。Username:用户名 Password:密码 $ npm adduser npm notice Log in on {地址}:4873/ Username: yourusername Password: Email: (this IS public) xxxxxx@qq.com Logged in as yourusername on {地址}:4873/.
登录
# 登录用户 $ npm login npm notice Log in on {地址}:4873/ Username: yourusername Password: Email: (this IS public) xxxxxx@qq.com Logged in as yourusername on {地址}:4873/ # 查看当前登录用户 $ npm who am i yourusername
发布
# 发布当前包 $ npm publish npm notice Hui-ui-vue@0.1.0 npm notice === Tarball Contents === npm notice 611B public/index.html npm notice 4.3kB public/favicon.ico npm notice 73B babel.config.js npm notice 151B packages/baseInput/index.js npm notice 214B packages/index.js npm notice 130B examples/main.js npm notice 730B vue.config.js npm notice 891B package.json npm notice 310B README.md npm notice 6.8kB examples/assets/logo.png npm notice 344B examples/App.vue npm notice 199B packages/baseInput/src/baseInput.vue npm notice 2.0kB examples/components/HelloWorld.vue npm notice === Tarball Details === npm notice name: Hui-ui-vue npm notice version: 0.1.0 npm notice package size: 10.5 kB npm notice unpacked size: 16.8 kB npm notice shasum: 08de3054edbef6c1706f849e40d05e99c16c607e npm notice integrity: sha512-6sVp52WobtHhq[...]bXfgebrphWd+Q== npm notice total files: 13 npm notice + Hui-ui-vue@0.1.0 # 最后看到 + [你的包名@版本号]既可
需要注意的是相同的包上传时版本号需要不同,否则上传会失败。
删除
进入包文件路径直接删除即可。
以上就是pm2与Verdaccio搭建私有npm库过程详解的详细内容,更多关于pm2 Verdaccio搭建npm库的资料请关注易盾网络其它相关文章!
本文共计2043个文字,预计阅读时间需要9分钟。
目录+前言+一个通常私有的npm仓库有以下几种实现方法:- 方案一:使用GitHub仓库作为私有npm仓库- 方案二:使用NPM Enterprise- 方案三:使用Verdaccio
下面对比各个方案:- 方案一:简单易用,但可能需要额外的GitHub账号和费用- 方案二:功能强大,但成本较高- 方案三:灵活且成本较低,适合中小型团队
为什么选择Verdaccio?- 安装简单- 配置灵活- 成本低
安装:
1.安装Node.js
2.安装Verdaccio
修改配置:
1.编辑配置文件
2.设置仓库权限
配置文件:
- verdaccio.config.yaml权限控制:- 使用用户认证和权限管理
部署:- 部署到服务器- 使用Docker部署- 使用pm2部署
管理npm仓库:- 使用Verdaccio的Web界面管理仓库
目录
- 前言
- 一般私有化的npm仓库有以下几种方法实现:
- 下面对各个方案进行一个粗浅的对比:
- 为什么选用Verdaccio?
- 安装
- 修改配置
- 配置文件
- 权限把控
- 部署
- docker部署
- pm2部署
- 管理npm仓库源
- npm包发布
- 注册
- 登录
- 发布
- 删除
前言
最近开会的时候讨论到前端组件库搭建,因为需要多人协作,使用npm link等都比较麻烦,且当业务规模较大了之后,我们一般会有自己的脚手架,自己的全局工具包等等。其中可能包含了自身的业务代码不能公开,因此我们都需要一个私有化的npm仓库。
一般私有化的npm仓库有以下几种方法实现:
- 通过npm购买私有服务
- 通过git直接引用
- 通过开源项目直接搭建,例如cnpm、verdaccio、sinopia等
下面对各个方案进行一个粗浅的对比:
- 官方私有npm服务:团队版$7/人/月这个价格就已经直接劝退,且不说npm在国内的网络情况不容乐观。
- 直接安装git代码:直接通过npm install 引入对应git代码确实有一定的便利性,但是当全局包多了之后不便于维护且权限难以管理
- sinopia:基于Node.js实现的一个开源npm库,年久失修。最近一次提交是6年前,直接放弃。
- cnpm:阿里出的npm私有方案,权限控制较为全面但是配置复杂,需要自己搭建mysql之类的数据库存储。
- verdaccio:基于sinopia继续开发,目前维护很频繁而且配置简单,可以快速搭建。
为什么选用Verdaccio?
verdaccio.org/
先跟大家吐个槽,其实我本来是想用sinopia搭建的私服,也知道大家也都倾向于sinopia来搭,毕竟它出道比较早,知名度比较高,但是sinopia的作者几年前就已经停止了对sinopia的维护和升级,不信大家可以自己去GitHub上看,上次更新真的停留在了几年前,唉,然后真是留了一堆坑,所幸不是没人管,只是有一群人又出了一个sinopia的fork,也就是sinopia的分支,而且还起了个洋气的意大利名verdaccio ,但是verdaccio 确实是正在维护的,我查了最近一次更新还是在2天前,这帮人还是挺勤快的,造福了大家啊~ 而且也比较好用,我用sinopia搭的时候填的一堆坑在verdaccio 这压!根!不!存!在!真是绝望啊,为啥我没有早点发现它。这里是verdaccio 在github的源码地址,大家想深入了解最好还是去看看源码和详细介绍。话不多说下面正式开始verdaccio的搭建。
安装
Verdaccio 的安装启动过程较为简单。首先是全局安装 Verdaccio:
npm i -g verdaccio
然后,在终端中输入 verdaccio 命令启动 Verdaccio:
接着 Verdaccio 会在终端中输出提示,输出它的配置文件位置、启动的服务地址等信息:
默认 Verdaccio 启动的服务都会在 4873 这个端口,在浏览器中打开这个地址我们就会看到 Verdaccio 搭建的私有库 npm 的界面:
修改配置
虽然,安装和启动好了 Verdaccio。但是,由于 Verdaccio 默认的配置和我们生产的需求不一致,所以我们需要修改一下 Verdaccio 的配置。
在生产环境下,私有 npm 库需要具备以下 3 个功能:
- 支持对 npm 包的搜索
- 严格的权限把控,npm 包的访问只能是已注册的用户。并且在一些场景下,需要删除用户
配置文件
npm i -g verdaccio
# 存放软件所有软件包的目录 storage: ../storage # 存放所有插件的目录 plugins: ../plugins web: # 网站Title title: Verdaccio # 禁用Gravatar头像 # gravatar: false # 排序方式 asc|desc # sort_packages: asc # 是否启用暗黑模式 # darkMode: true # logo地址 # logo: somedomain/somelogo.png # favicon地址 # favicon: somedomain/favicon.ico | /path/favicon.ico # i18n翻译配置 # i18n: # 可用列表见:github.com/verdaccio/ui/tree/master/i18n/translations # web: en-US auth: htpasswd: file: ./htpasswd # 最大注册用户数,默认为 "+inf". # 可用通过设置为-1禁止注册 # max_users: 1000 # 上游npm库,这里可用设置为淘宝 uplinks: npmjs: url: registry.npmjs.org/ packages: # 作用域包 '@*/*': # 允许所有人访问 access: $all # 注册用户可访问 publish: $authenticated # 注册用户可访问 unpublish: $authenticated proxy: npmjs '**': # 默认情况下所有用户 (包括未授权用户) 都可以查看和发布任意包 # 你可以指定 用户名/分组名 (取决于你使用什么授权插件,默认的授权插件是内置的 htpasswd) # 访问权限有三个关键词: "$all", "$anonymous", "$authenticated" # $all 表示不限制,任何人可访问; # $anonymous 表示未注册用户可访问; # $authenticated 表示只有注册用户可访问 access: $all # 允许所有注册用户发布/撤销已发布的软件包 # (注意:默认情况下任何人都可以注册) publish: $authenticated unpublish: $authenticated # 如果私有包服务不可用在本地,则会代理请求到'npmjs' proxy: npmjs # 您可以指定传入连接的HTTP /1.1服务器保持活动超时(以秒为单位)。 # 值为0会使{地址}:4873/ # 查看现有的npm源 $ nrm ls npm ---------- registry.npmjs.org/ yarn --------- registry.yarnpkg.com/ tencent ------ mirrors.cloud.tencent.com/npm/ cnpm --------- r.cnpmjs.org/ taobao ------- registry.npmmirror.com/ npmMirror ---- skimdb.npmjs.com/registry/ * verdaccio ---- {地址}:4873/ # 设置npm源 $ nrm use verdaccio
npm包发布
注册
# 注册用户,这里因为方便演示,所以没有关闭注册。Username:用户名 Password:密码 $ npm adduser npm notice Log in on {地址}:4873/ Username: yourusername Password: Email: (this IS public) xxxxxx@qq.com Logged in as yourusername on {地址}:4873/.
登录
# 登录用户 $ npm login npm notice Log in on {地址}:4873/ Username: yourusername Password: Email: (this IS public) xxxxxx@qq.com Logged in as yourusername on {地址}:4873/ # 查看当前登录用户 $ npm who am i yourusername
发布
# 发布当前包 $ npm publish npm notice Hui-ui-vue@0.1.0 npm notice === Tarball Contents === npm notice 611B public/index.html npm notice 4.3kB public/favicon.ico npm notice 73B babel.config.js npm notice 151B packages/baseInput/index.js npm notice 214B packages/index.js npm notice 130B examples/main.js npm notice 730B vue.config.js npm notice 891B package.json npm notice 310B README.md npm notice 6.8kB examples/assets/logo.png npm notice 344B examples/App.vue npm notice 199B packages/baseInput/src/baseInput.vue npm notice 2.0kB examples/components/HelloWorld.vue npm notice === Tarball Details === npm notice name: Hui-ui-vue npm notice version: 0.1.0 npm notice package size: 10.5 kB npm notice unpacked size: 16.8 kB npm notice shasum: 08de3054edbef6c1706f849e40d05e99c16c607e npm notice integrity: sha512-6sVp52WobtHhq[...]bXfgebrphWd+Q== npm notice total files: 13 npm notice + Hui-ui-vue@0.1.0 # 最后看到 + [你的包名@版本号]既可
需要注意的是相同的包上传时版本号需要不同,否则上传会失败。
删除
进入包文件路径直接删除即可。
以上就是pm2与Verdaccio搭建私有npm库过程详解的详细内容,更多关于pm2 Verdaccio搭建npm库的资料请关注易盾网络其它相关文章!

