npm缓存
缓存命令:npm config get cache
缓存所在的目录:/Users/miao/.npm/_cacache
,里面有三个目录:content-v2,index-v5,tmp
其中 content-v2
里面基本都是一些二进制文件。为了使这些二进制文件可读,我们把二进制文件的扩展名改为 .tgz,然后进行解压,得到的结果其实就是我们的 npm 包资源
index-v5
中是一些描述文件,对应的是content-v2
文件的索引
清除缓存:npm cache clean --force
nrm 多源镜像管理
nrm(npm registry manager )
是npm
的镜像源管理工具,有时候国外资源太慢,使用这个就可以快速地在 npm
源间切换
安装:
npm i -g nrm
-
查看镜像源:
nrm ls
增加镜像源:
nrm add <name> <url>
删除镜像源:
nrm del <name>
使用镜像源:
nrm use <name>
查看当前镜像:
nrm current
nrm坑
如果是windows,安装完后,使用nrm可能会报以下错误
internal/validators.js:125
throw new ERR_INVALID_ARG_TYPE(name, 'string', value);
^
TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received
type undefined
解决:找到C:\Users\Administrator\AppData\Roaming\npm\node_modules\nrm\cli.js
第17
行
// const NRMRC = path.join(process.env.HOME, '.nrmrc');
// 上面这句修改为
const NRMRC = path.join(process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'], '.nrmrc');
部署私有npm镜像
环境:windows(64位)
1. 安装nexus3
2. 开启服务
解压后,进入nexus-3.16.1-02\bin
目录,在命令cmd
窗口执行nexus.exe /run
打开浏览器http://localhost:8081/
3. 登录
点击sign in
,账号默认:admin/admin123
4. 创建存储空间
5. 创建仓库
可以看到npm仓库有三种类型:
- hosted:私有仓库,用于发布个人开发或公司私有的npm组件
- proxy:代理仓库,可以代理npm和淘宝镜像
- group:组合仓库,对外公开的仓库,集合了hosted和proxy
-
创建私有仓库
-
创建代理仓库
- 创建组合仓库
把刚增加的仓库,加入组合仓库成员中,成员中越靠上,仓库的优先级越高,也就是private-npm > proxy-npm
,会优先找私有仓库的npm包,如果没有,才会找代理仓库的
6. 创建用户,设置权限
-
创建用户
-
设置权限,用于发布npm包
到这一步,nexus就设置好了,下面是使用
7. 使用
-
将组合仓库
group-npm
的地址拷贝出来
将npm源设置为拷贝出来的地址,比如这里是
http://localhost:8081/repository/group-npm/
设置npm源:npm config set registry http://localhost:8081/repository/group-npm/
开发私有包并测试
- 开发私有
npm
包
开发一个npm
包的过程其实还比较复杂,这里为了测试简化了,本地创建一个测试的npm包,新建一个文件夹test-npm
,进入此目录后,初始化项目npm init -y
,创建一个index.js
- 将这个包链接到本地全局npm包
cd test-npm
npm link
- 本地测试此包有没有毛病,在要用到此包的地方使用
npm link test-npm
来链接,此时,test-npm
就会被创建到node_modules
下
mkdir test
cd test
npm init -y
npm link test-npm
创建测试文件
src/test.js
执行
node test.js
,可以看到输出3
:说明本地测试这个包没毛病
- 将全局软链取消
cd test-npm
npm unlink
- 将私有包发布到私有仓库
-
拷贝私有仓库地址,这里是:
http://localhost:8081/repository/private-npm/
-
登录私有仓库
npm login -registry=http://localhost:8081/repository/private-npm/
,然后输入用户名、密码、邮箱
-
发布
npm publish -registry=http://localhost:8081/repository/private-npm/
远程查看,发布是否成功:
-
本地测试
在刚刚test
项目里,删除掉node_modules
(当然你也可以新建一个项目来测试),因为刚刚已经设置镜像源为组合仓库了,所以这里可以直接安装包npm i test-npm
,看到包已经下载下来了,测试也没问题,完美!
可以使用
nrm
将当前的私有库,保存起来,方便以后切换仓库源
nrm add mynpm http://localhost:8081/repository/group-npm/
nrm ls
可以看到,带*
号的就是当前在用的
参考:
https://mp.weixin.qq.com/s/2ntKGIkR3Uiy9cQfITg2NQ
https://blog.csdn.net/ayunnuo/article/details/113769504
https://www.cnblogs.com/tuituji27/p/11171780.html