前言

本文仅供学习探讨之用,如果侵犯了您的权益请联系我删除。

准备工作

安装 verdaccio npm install --global verdaccio

启动 verdaccio verdaccio

启动日志

启动之后Ctrl + C停止服务。

然后把config.yaml给复制到我们的目录下,再把它生成的配置全删了

  1. copy "C:\Users\YourName\AppData\Roaming\verdaccio\config.yaml" .
  2. rmdir "C:\Users\YourName\AppData\Roaming\verdaccio"
    • A

复制配置

再次启动 verdaccio verdaccio,看到配置变成我们的目录就OK了。

配置成功

仓库保存

为了方便部署,我们可以把这个仓库作为一个git仓库来进行管理,然后上传到自己的私有仓库。下次在别的机器上使用只需要git clone一下仓库到本地然后在仓库目录启动verdaccio就行,比如经典Github当网盘用

  1. git init
  2. git add .
  3. git commit -m "Initialize repository"

Git提交

再添加一个脚本(RunVerdaccio.bat),用来启动verdaccio。

@echo off
verdaccio

然后把这个脚本右键发送到桌面快捷方式,需要的时候双击启动岂不美哉。

再把RunVerdaccio.bat提交一下就大功告成了。

  1. git add .
  2. git commit -m "Add RunVerdaccio.bat"

使用

先登录一下本地仓库,只需第一次使用的时候配置一下就行了。

  1. npm login --registry http://localhost:4873/ 这里账号密码随便填就好了。
  2. npm whoami --registry http://localhost:4873/ 看到是自己刚才填的账号名就OK了。

登录

去别的地方新建一个测试用的包

  1. mkdir npm-test
  2. cd npm-test
  3. npm init -y

然后直接把这个包提交到本地仓库,注意要加上--registry参数,不然会默认提交到NPM官方仓库。

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

提交测试包

提交成功后我们在浏览器打开http://localhost:4873/,可以看到我们刚才提交的包。

测试包

使用这个包时在参数列表加上--registry指定本地仓库即可。

  • npm install npm-test --registry http://localhost:4873/

最后如果我们不再需要这个包了可以把它删除掉。

  • npm unpublish --force npm-test --registry http://localhost:4873/

这样子本地仓库的记录中就没有这个包了。

更方便的使用

为了不用每次都要加--registry参数,我们可以用npm scope的方式来解决这个问题。

  • npm config set @bzi-han:registry http://localhost:4873/

这里@bzi-han是我的用户名,你也可以换成自己的或是任何的比如@local什么的,后面我们发布的包都要按照相应的名称的目录层级去发布。

比如我这有个unrealengine-rd的包,它的目录层级就是

package-folder
  └─@bzi-han
    └─unrealengine-rd
      └─package.json

然后你的package.json文件中的name也就是包名也要以@bzi-han/unrealengine-rd的形式去写。

发布的时候只需要在package.json的目录

  • npm publish

取消发布

  • npm unpublish @bzi-han/unrealengine-rd --force 取消发布这个包
  • npm unpublish --force 取消发布当前版本

使用

  • npm install @bzi-han/unrealengine-rd

Yarn

其实操作都一样的,我就不演示了,只把命令列出来。

  • yarn login --registry http://localhost:4873/
  • yarn config set @bzi-han/registry http://localhost:4873/
  • yarn publish
  • yarn add @bzi-han/unrealengine-rd

结语

必须狠狠的喷一下Yarn没有unpublish,这个还是通过NPM吧。

那就这样了,有缘再见~