作为一个前端,我们经常要接触 npm,当我们的水平提上去之后有可能会去发布属于我们的 npm 包,或者在公司内网中发布私有包,希望这篇文章能够帮助到你。
准备一下环境
- Node 环境,顺便帮你装好了 npm 了
- docker 这个其实可以不用的,到后面再说
nrm
nrm 是一个镜像管理工具,能够帮助我们快捷切换各种源
查看源列表
nrm ls
默认会有一些源,例如淘宝源,可以加快 npm 包的下载
添加源
nrm add <origin_name> <origin_url>
删除源
当然有加就会有减
nrm del <origin_name>
切换源
nrm use <origin_name>
nrm 上常用的大概就这几个命令,关于搭建私有仓库还没有用到其他的命令。
verdaccio
接下来的包才是重点,它是搭建整个私有仓库的核心,它就是verdaccio,它的使用也非常的简单。
首先,直接将它安装到全局模块中:
npm i -g verdaccio
然后直接执行 verdaccio 就可以去到 http://localhost:4873 查看我们的私有仓库了。
没有啦,就这样,拜拜~
==========================================================
确实到上面已经结束了,但并没有完全结束,我们还需要登录 verdaccio 才能够发包
首先我们要切换到 verdaccio 对应的源上,那么要执行的命令大概是:
nrm add mynpm http:127.0.0.1:4837
nrm use mynpm
然后是登录账号,如果你没有当前源下的账号,那么就注册一个就好了
npm adduser
npm login
> username: xxx
> password: xxx
> email: xxx
登录好之后只需要发布就好了:
npm publish
当然,每次发布都要更新版本号,不然会失败的哦!
发布完在私有仓库中就会出现这样的包啦,然后就可以直接拿来用,跟普通的 npm 包一样,唯一不同的就是镜像源的地址。
2022.10.08 更新:两个 docker 之间是互不干扰的,就像两台独立的电脑,我们只能通过访问宿主机去间接访问另外的 docker 环境。即我们的通过上面的命令启动了 verdaccio 之后,我们在另外一个 docker 环境添加 npm 源的时候只能通过添加本机的ip去访问到 verdaccio,不然在执行 npm 相关的命令时会报错。即
nrm add mynpm http:xxx.xxx.x.x:4873
到这里又结束啦!
==========================================================
偶尔可能也许大概应该maybe...会遇到413 Payload Too Large - PUT http://xxx- request entity too large这样的情况,出现的情况多半是内容越来越多,我们包的内容超过了 10mb,这个是 verdaccio 默认的包的最大值,我们可以通过修改 C:\Users\xxxxxx\.config\verdaccio 下的 config.yml 中的 max_body_size 来解决这个问题,将它设置成 100mb,不够的话就 1000mb。
到这里基本就结束了,但是,总有人会用到docker的吧,会有吧,有吧,吧...不会只有我一个人吧😭😭😭
我不是很会用docker,所有的都是网上零零碎碎看到的,有错的话评论区告诉我,我们一起进步。
首先我们要拉取最新的与构建 docker 镜像
docker pull verdaccio/verdaccio
当然也可以指定版本,就不介绍了,可以去官网查看。
下一步就是使用 docker 运行 verdaccio
docker run -it --rm --name verdaccio -p 4873:4873 verdaccio/verdaccio
但是这样执行了之后我们没有办法修改配置。
对于一直 docker 小白的我 来说,我找了半天如何修改 max_body_size,因为一直看不懂 docker 命令中 -v 的意思,在一次尝试中领悟到了用法。
docker run -it --rm --name verdaccio -v "C:\Users\xxx\config\verdaccio:/verdaccio/conf" -p 4873:4873 verdaccio/verdaccio
-v 其实分为两个部分,: 前 C:\Users\xxx\config\verdaccio 为本地内容,: 后 /verdaccio/conf 为容器内容,上面的指令就是使用本地的内容去替换容器内容。
这样我们就可以使用我们的本地配置去启动 docker 上的 verdaccio。
下面是 verdaccio 的本地内容:
docker
每次修改好文件,重启docker的时候,总会发现docker里面的环境被重置了,这是因为每次以 docker run 的方式进入 docker 之后,都会产生一个新的容器。
docker肯定也是有解决方法的,那就是将容器保存为一个新的镜像:
docker commit <container_id> new_image_name(optional)
设置了 new_image_name 的情况下可以通过 new_image_name 代替 container_id
启动镜像的命令
docker start <new_image_name/container_id>
进入某个容器的命令
docker exec -it <new_image_name/container_id> /bin/bash 进入镜像
到这里就先告一段落吧,之后有关的内容会直接往这里更新,就不开新篇了(除非太长了)。
文章略显杂乱,如有错误及补充,希望诸位,不吝赐教,畅所欲言。
补充
- 2022.10.08 docker搭建了lnmp环境后,如果需要访问安装在宿主机上的数据库或中间件,是不能直接使用127.0.0.1这个ip的,这个ip在容器中指向容器自己,那么应该怎么去访问宿主机呢:例如你的docker环境的虚拟IP是192.168.99.100,那么宿主机同样会托管一个和192.168.99.100同网段的虚拟IP,并且会是主IP:192.168.99.1,那么就简单了,在容器中访问192.168.99.1这个地址就等于访问宿主机,问题解决注意,通过192.168.99.1访问宿主机,等于换了一个ip,如果数据库或中间件限制了本机访问或者做了ip段限制,要记得添加192.168.99.1到白名单。介绍docker容器访问宿主机的服务端口 (huaweicloud.com)