npm私服搭建
windows10的环境,使用 docker desktop。要注册账号的。
C盘D盘要共享。(后面nexus的volume要用到)。
可以设置一个镜像。一般使用阿里云的私有镜像。阿里云镜像加速器。阿里的东西越埋越深,找都要找半天。
"registry-mirrors": [
"https://xxxxxxx.mirror.aliyuncs.com"
],
这个东西可以不安装,因为官方提供的版本是坏的,有BUG!!!然后我clone了git上的master下来改,BUG更多!!!要改的话,时间成本太高了,算了。可以使用之前的release,然后从桌面启动。
image的搜索,在docker hub,搜索nexus3,按照提示安装。
docker run -d -p 10081:8081 -v /d/docker/nexus11:/nexus-data --name nexus sonatype/nexus3:latest
命令 | 解释 |
---|---|
-d |
后台运行容器,并返回容器ID |
-p 10081:8081 |
指定端口映射,格式为:主机(宿主)端口:容器端口 |
-v /d/docker/nexus11:/nexus-data |
指定挂载的volume地址,格式为:主机目录:容器目录 |
--name nexus |
为容器指定一个名称 |
sonatype/nexus3:latest |
image的名称:image的TAG |
!!!注意 |
- 一定要设置
-p 10081:8081
端口,不然后面改起来非常麻烦。不建议修改,可以直接新建一个,挂之前的volume就可以了。如果一定要修改,可以参考stackoverflow修改配置文件 - 不建议手动修改container配置。可以重启一个,挂载相同的volume就可以了。container只是一个进程,并不是程序本身。
- 挂载volume。
- 通过设置shared drives共享的磁盘,不会出现在
docker volume ls
里面。可以理解为外挂的。非docker系统内部的。 - 挂载的文件夹必须存在,就是说要先手动新建这个文件夹!
- 通过设置shared drives共享的磁盘,不会出现在
- 进入container,可以看到挂载的文件夹
nexus-data
docker exec -it nexus11 /bin/bash ls -l
C盘要爆了,一下占了好多个G,全都移到D盘。 改2个地方。
Hyper-V设置--虚拟机
docker settings--advanced
根据npm 私有模块的3种方法的第三种方法来配置的。这个文档的创建账号不对,角色要选nx-admin
的才能去publish
input | value |
---|---|
Type | file(option) |
Name | BlobName(string) |
Path | BlobPath(string) |
input | value |
---|---|
Name | npm(proxy)'s name |
Remote storage | https://registry.npmjs.org |
Blob Store | BlobName(option) |
input | value |
---|---|
Name | npm(hosted)'s name |
Blob Store | BlobName(option) |
input | value |
---|---|
Name | npm(group)'s name |
Blob Store | BlobName(option) |
Member repositories | 1.npm(hosted) 2.npm(proxy) |
nrm ls
nrm add privateNpm http://localhost:10081/repository/npm-group/
nrm use privateNpm
"publishConfig": {
"registry": "http://localhost:10081/repository/npm-private/"
},
在nexus的Security > Realms
里面,添加npm Bearer Token Realm
。**注意!!**只有role
为nx-admin
的账户有提交权限。
登录:注意地址是npm-private
,不是npm-group
npm login --registry=http://localhost:10081/repository/npm-private/
根据官方提示来生成auth是有问题的。windows10下,用powershell
和cmd
生成的都不一样!!!
echo -n 'admin:admin123' | openssl base64
YWRtaW46YWRtaW4xMjMNCg== //by powershell
LW4gJ2FkbWluOmFkbWluMTIzJyANCg== //by cmd
YWRtaW46YWRtaW4xMjM= //the right one
只能用这个方法来生成:
新建一个文件,写入用户名:密码
,不能有空格,不能换行。
admin:admin123
然后在文件所在目录运行
certutil /encode in.txt out.txt
项目文件夹下新建文件.npmrc
registry=http://localhost:10081/repository/npm-group/
_auth=YWRtaW46YWRtaW4xMjM=
email=[email protected]
然后就可以不登录,直接提交了。
本地包开发的时候,把包目录link到C:\Users\Administrator\node_modules\
目录下,可以看到就是一个链接
cd packages\packageName\
npm link
然后在项目目录下,link需要的包
cd projectName
npm link packageName
这个包就link
到了项目的node_modules
里面,可以本地开发调试包了。
指定所需要兼容的宿主包的版本。npm3之后不会强制安装,只会warning
。包之间的需求宿主包版本冲突,会导致error。