Skip to content

NPM 私有源配置指南

概述

我们使用基于 Verdaccio 部署的私有 npm 仓库来管理内部的私有包。私有仓库地址为:

🔗 https://npm-all.q2tx.com/

注意: 需要登录才能查看和下载私有包

关于 Verdaccio

Verdaccio 是一个轻量级的 Node.js 私有代理注册表,主要特点:

  • 📦 支持 npm、yarn、pnpm 等包管理器
  • 🔒 提供身份验证和权限控制
  • 🚀 高性能的缓存代理
  • 🛠️ 易于部署和维护
  • 📱 提供 Web UI 界面

管理员配置

用户认证配置流程

如需为 npm 私有源添加新用户,请按以下步骤操作:

第一步:生成加密密码

  1. 访问 https://hostingcanada.org/htpasswd-generator/
  2. Username 字段输入用户名
  3. Password 字段输入密码
  4. Mode 选项中选择 Bcrypt (Apache v2.4 onwards)
  5. 点击生成,复制生成的 htpasswd 字符串

htpasswd-generator

第二步:配置到 Nomad

注意: 访问 Nomad 管理界面需要配置 IP 白名单才能正常访问,请确保您的 IP 地址已被授权。

  1. 访问 https://nomad.q2tx.com/ui/jobs/verdaccio@default/definition?view=job-spec
  2. 找到 EmbeddedTmpl 环境变量配置
  3. 将生成的 htpasswd 字符串添加到配置中
  4. 多个账号使用 \n 分隔符隔开

示例配置格式:

atom8:$2y$10$OIS2UIODdmpZeKX2I05steSZZ...
user2:$2y$10$OtherHashedPasswordHere...
user3:$2y$10$AnotherHashedPasswordHere...

nomad-verdaccio

第三步:重启服务

配置完成后,重启 Verdaccio 服务使配置生效。

配置方法

1. 获取认证令牌

客户端的认证流程由 npm 自行处理,按以下步骤操作:

方式一:使用 npm adduser 命令(推荐)

bash
npm adduser --registry https://npm-all.q2tx.com/

执行命令后,按提示输入:

  • 用户名(Username)
  • 密码(Password)
  • 邮箱(Email)

登录成功后,npm 会将 Verdaccio 返回的 Token 自动保存在配置文件中。

查看生成的配置

Token 存放于您的用户主目录下的 .npmrc 文件中:

macOS/Linux:

bash
cat ~/.npmrc

Windows:

cmd
type %USERPROFILE%\.npmrc

示例输出:

bash
//npm-all.q2tx.com/:_authToken="generate token"

注意: 如需了解更多有关 .npmrc 相关的内容,请查阅 npm 官方文档

方式二:手动配置(可选)

如果需要手动配置,可以在项目根目录创建 .npmrc 文件:

bash
# 配置作用域包的注册表
@atom8:registry=https://npm-all.q2tx.com

# 配置认证令牌(从上述方式一中获取)
//npm-all.q2tx.com/:_authToken="generate token"

发布包到私有源

1. 登录到私有源

bash
npm login --registry=https://npm-all.q2tx.com

输入您的用户名、密码和邮箱进行登录。

2. 配置包的作用域

package.json 中确保包名使用正确的作用域:

json
{
  "name": "@atom8/your-package-name",
  "version": "1.0.0",
  "publishConfig": {
    "registry": "https://npm-all.q2tx.com"
  }
}

3. 发布包

bash
# 发布到私有源
npm publish --registry=https://npm-all.q2tx.com

# 或者如果已在 package.json 中配置了 publishConfig
npm publish

安装私有包

方式一:使用作用域配置(推荐)

如果已按上述方式配置了 .npmrc,可以直接安装:

bash
npm install @atom8/your-package-name

方式二:指定注册表

bash
npm install @atom8/your-package-name --registry=https://npm-all.q2tx.com

常见问题

Q: 认证失败怎么办?

A: 检查以下几点:

  • 确认 authToken 是否正确
  • 检查 .npmrc 文件格式是否正确
  • 尝试重新登录 npm login --registry=https://npm-all.q2tx.com

Q: 找不到包怎么办?

A: 确认:

  • 包名和作用域是否正确
  • 是否有权限访问该包
  • 网络连接是否正常

Q: 如何管理多个注册表?

A: 可以使用 nrm 工具来管理多个注册表:

bash
# 安装 nrm
npm install -g nrm

# 添加私有源
nrm add company https://npm-all.q2tx.com

# 切换到私有源
nrm use company

# 查看当前源
nrm current

最佳实践

  1. 版本管理:遵循 语义化版本 规范
  2. 文档说明:为私有包编写详细的 README.md
  3. 权限控制:合理设置包的访问权限
  4. 备份策略:定期备份重要的私有包
  5. 安全配置:使用 Bcrypt 加密方式保护用户密码

相关链接

📚 更多前端文档

🚀 构建现代化数字资产交易平台