npm 搭建私有仓库

1、前言:

公司项目通过乾坤拆分之后,导致写一次需求有可能要部署好几个项目,使用jenkins同时部署多个项目,服务器也不支持,部署项目大部分时间基本都浪费到 npm i 这里了,想着能不能让 npm i 进行提提速,然后就想到了 搭建npm 私有库,既可以保护自己的业务代码和核心技术 还能使npm i 的速度加快

2、开始安装

推荐node 版本 18及18以上

npm i verdaccio -g

安装成功后可以先直接运行<verdaccio>命令启动

verdaccio

出现上图就代表启动成功了
可以看到一些关键信息
1.配置文件的目录:C:\Users\29335\AppData\Roaming\verdaccio\config.yaml (按自己的实际目录)
2.服务所在的地址:http://localhost:4873/ 

打开 http://localhost:4873/  就可以看到本地服务已经启动好了

现在会有一个问题
直接verdaccio启动,会占用命令行进程,没有办法执行其他命令,这时候可以用pm2来启动和守护进程,如果没有安装pm2,可以执行npm i pm2 -g安装,然后使用pm2启动verdaccio

pm2 start verdaccio

出现上图就代表启动成功了
执行成功后,查看pm2启动verdaccio的日志

pm2 logs verdaccio

以上就代表pm2 启动成功

verdaccio已经安装完成已经可以使用

3、发布包到verdaccio私有库

3.1 创建用户

看刚才启动好的verdaccio可视化页面页面 http://localhost:4873

按照它的命令提示,进行添加用户操作

npm adduser --registry http://localhost:4873/

此时用户已经创建好了

3.2发布npm包到verdaccio私有库

第一步:创建一个文件夹

mkdir verdaccio-demo-publish
cd verdaccio-demo-publish

第二步:初始化npm,生成package.json

npm init -y

现在的package.json

{
  "name": "verdaccio-demo-public",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

第三步:和package.json同目录新增index.js文件
在index.js中使用common.js规范暴露一个add方法,计算两数的和

// index.js
module.exports.add = function(a, b) {
  return a + b
}

第四步:package.json添加files字段,配置npm发布时要上传的文件,此时只需要添加index.js, package.json文件会默认上传。

{
  "name": "verdaccio-demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1"
  },
  "files": [
    "index.js"
  ],
  "keywords": [],
  "author": "",
  "license": "ISC"
}

第五步:发布包到verdaccio私有库
根据verdaccio可视化界面的提示,执行发布命令

npm publish --registry http://localhost:4873/

打开之后就能查看自己发的包了

 3.3 优化包发布

不想每次发布包的时候 npm publish后面添加--registry http://localhost:4873/
可以在根目录 创建 <.npmrc>文件里面配置 

registry=http://localhost:4873/

这样每次更新的时候 就可以直接使用 npm publish  每次提交的时候记得修改版本  再去可视化页面查看就可以看到包已经更新了

 4、使用发布在verdaccio私有库的包

4.1新建项目并初始化

mkdir verdaccio-demo
cd verdaccio-demo
npm init -y

4.2 安装上传到verdaccio私有库的包

需要在根目录配置<.npmrc>文件 文件内容

registry=http://localhost:4873/

主要就是把咱们的npm源给替换为本地私有库的地址

 以上就是查看npm源 结果

 这个时候执行下载命令

npm i verdaccio-demo-publish -S

 执行完就会正常下载下来

新建index.js文件,添加一下代码,从verdaccio-demo-publish包中引入add方法,

const { add } = require('verdaccio-demo-publish')
console.log(add(1, 1))

使用 在终端 执行node index.js 看到打印结果

 4.3测试不在verdaccio中的包下载

刚才可以正常安装私有库的包了,测试一下安装私有库中不存在的包,以vue来测试

 发现也可以正常安装,代表不管下载verdaccio私有库包还是下载npm公共库包都已经可以正常使用了。

 5.发布npm包到私有库

以下使用element举例
咱们从项目中的 node_modules 或者去 github上面下载源码

 我是从项目中的 node_modules 拿到了 element 源码
使用终端打开执行

npm publish --registry http://localhost:4873/

 提示以上错误的情况下

 在 package.json 把version版本号修改一下
再次执行 npm publish --registry http://localhost:4873/  
刷新一下 verdaccio 可视化界面  已经上传成功了

 


 

 

 

 





 

 



 

posted @ 2025-04-17 17:50  樱桃树下的约定  阅读(899)  评论(2)    收藏  举报
返回顶端