nexus3配置npm私有仓库
时间: 2025-01-09 11:35:46 浏览: 14
### 如何在 Nexus 3 上设置和配置 npm 私有仓库
#### 创建 Hosted 类型的 npm 仓库
为了存储内部开发的包,在 Nexus 中需创建一个名为 `npm-hosted` 的 hosted 类型仓库。此类型的仓库用于托管私有的 npm 包。
```bash
curl -u admin:admin123 \
-X POST "http://localhost:8081/service/rest/v1/repositories/npm/hosted" \
-H 'Content-Type: application/json' \
-d '{"name":"npm-hosted","online":true,"storage":{"blobStoreName":"default","strictContentTypeValidation":true},"cleanup":{"policyNames":["string"]}}'
```
该 API 请求向 Nexus 发送指令来建立一个新的hosted仓库[^3]。
#### 添加 Proxy 类型的 npm 仓库
为了让开发者能够访问公共库中的资源,还需添加一个proxy类型的仓库指向官方或镜像源(如 taobao)。这允许从外部注册表获取第三方模块并缓存于本地环境中。
```json
{
"name": "npm-proxy",
"online": true,
"storage": {
"blobStoreName": "default",
"strictContentTypeValidation": true
},
"proxy": {
"remoteUrl": "https://registry.npmmirror.com/",
"contentMaxAge": 1440,
"metadataMaxAge": 1440
}
}
```
上述 JSON 数据定义了一个新的代理仓库,并将其远程 URL 设置为中国淘宝 NPM 镜像站点[^1]。
#### 构建 Repository Group (仓库组合)
最后一步是构建一个包含之前创建好的 host 和 proxy 库在内的 repository group。当执行 `npm install` 命令时,默认会查询这个组合体内的所有成员。
```json
{
"name": "npm-all",
"format": "npm",
"group": [
{"repositoryName": "npm-hosted"},
{"repositoryName": "npm-proxy"}
]
}
```
这段代码片段展示了如何通过 RESTful API 来创建一个名为 `npm-all` 的仓库组,它包含了前面提到过的两个子仓库[^5]。
#### 修改全局 npm Registry 地址
完成以上步骤之后,可以通过修改用户的 `.npmrc` 文件或者运行如下命令更改默认的 registry:
```bash
npm config set registry http://nexus-server-url:8081/repository/npm-all/
```
这条命令指定了自定义 nexus server url 及端口号下的路径作为新的 npm 注册中心位置。
对于希望发布的私有包,则应单独指定其对应的仓库地址:
```bash
npm publish --registry=http://nexus-server-url:8081/repository/npm-hosted/
```
以此方式确保所发出去的是针对特定主机而非整个群集的操作。
阅读全文