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 可视化界面 已经上传成功了

本文来自博客园,作者:樱桃树下的约定,转载请注明原文链接:https://www.cnblogs.com/tcyweb/p/18829250

浙公网安备 33010602011771号