首页 > web前端 > js教程 > 私有 npm 存储库

私有 npm 存储库

Patricia Arquette
发布: 2025-01-05 09:43:40
原创
346 人浏览过

Private npm Repositories

下面是有关如何设置私有 npm 存储库的深入指南,包括各种替代方案和实用的代码片段,可帮助您入门。无论您是独立开发人员还是大型团队的一员,私下托管您自己的 npm 包都可以为您提供控制力、灵活性和更高的安全性。


为什么使用私有 npm 存储库?

  1. 安全和控制:将您的包和代码保留在内部。
  2. 更快的构建:减少外部依赖和网络延迟。
  3. 访问管理:控制谁可以访问或发布某些包。
  4. 版本控制和存档:维护内部包的多个版本,而不会造成混乱或外部中断。

托管私有 npm 存储库的常见方法

  1. 自托管解决方案

    • Verdaccio:流行的开源轻量级 npm 代理注册表。
    • Sonatype Nexus:用于托管多种存储库格式(npm、Maven 等)的综合平台。
    • JFrog Artifactory:广泛使用的二进制存储库管理器。
  2. 由 Git 主机管理

    • GitHub 包:在 GitHub 组织内托管私有 npm 包。
    • GitLab Packages:提供内置的 npm 注册表作为 GitLab DevOps 平台的一部分。
    • Bitbucket(通过第三方集成或自定义解决方案)。
  3. npm 企业版

    • 如果您拥有大型团队并需要企业级功能(高级访问控制、安全审核等),npm Enterprise 可能是一个选择。

1. 使用 Verdaccio 设置私有 npm 注册表

Verdaccio 是一个开源 npm 注册表代理,易于设置和使用。它允许您托管私有包并缓存官方 npm 注册表中的公共包。

1.1 安装维达西奥

假设 Node.js 已安装在您的计算机上:

# Install Verdaccio globally
npm install --global verdaccio
登录后复制
登录后复制
登录后复制

1.2 启动维达乔

verdaccio
登录后复制
登录后复制
登录后复制

默认情况下,Verdaccio 在端口 4873 上启动。您可以打开浏览器访问 http://localhost:4873 以查看 Verdaccio UI。

1.3 配置Verdaccio

Verdaccio 在第一次运行时创建默认配置文件。您可以通过编辑来自定义它(文件路径可能会根据您的系统而有所不同)。典型的配置 (~/.config/verdaccio/config.yaml) 如下所示:

# Install Verdaccio globally
npm install --global verdaccio
登录后复制
登录后复制
登录后复制
  • storage:Verdaccio 存储包的目录。
  • uplinks:指向官方 npm 注册表。
  • packages:定义访问、发布和代理的规则。

1.4 创建用户并登录

verdaccio
登录后复制
登录后复制
登录后复制

这会提示输入用户名、密码和电子邮件。完成后,您将登录到您的私人注册表。

1.5 发布包

在具有有效 package.json 的包目录中:

storage: ./storage
auth:
  htpasswd:
    file: ./htpasswd
    max_users: 100

uplinks:
  npmjs:
    url: https://registry.npmjs.org/

packages:
  '@*/*':
    access: $all
    publish: $authenticated
    proxy: npmjs

  '**':
    access: $all
    publish: $authenticated
    proxy: npmjs

middlewares:
  audit:
    enabled: true

logs:
  - { type: stdout, format: pretty, level: http }
登录后复制
登录后复制

就是这样!您的包现已发布到您本地的 Verdaccio 注册表。

1.6 从您的私人注册表安装

要从此注册表安装软件包,您可以:

  • 使用 --registry 标志:
npm adduser --registry http://localhost:4873
登录后复制
登录后复制
  • 或者将您的 .npmrc 设置为全局或特定项目中指向此注册表:
npm publish --registry http://localhost:4873
登录后复制
登录后复制

2. 使用 GitHub 包

如果您已经在 GitHub 上托管代码,那么使用 GitHub Packages 可以是一种将所有内容都集中在一个屋檐下的便捷方法。

2.1 为您的存储库启用 GitHub 包

  1. 转到 GitHub 上的存储库。
  2. 点击设置 -> 套餐
  3. 确保为您的组织/帐户启用 GitHub Packages。

2.2 对 GitHub 包进行身份验证

使用 read:packages 和 write:packages 范围创建个人访问令牌 (PAT)。您可以从 开发者设置 -> 下的 GitHub 设置生成此令牌。 个人访问令牌

将您的令牌添加到 .npmrc:

  npm install <package-name> --registry http://localhost:4873
登录后复制
登录后复制

将 YOUR_GITHUB_USERNAME 替换为您的实际用户名或 GitHub 组织名称。

2.3 将包发布到 GitHub Packages

使用与您的 GitHub 用户名或组织匹配的范围更新您的 package.json:

  registry=http://localhost:4873
登录后复制

然后发布:

//npm.pkg.github.com/:_authToken=YOUR_PERSONAL_ACCESS_TOKEN
@YOUR_GITHUB_USERNAME:registry=https://npm.pkg.github.com
登录后复制

2.4 从 GitHub 包安装

确保 .npmrc 指向 GitHub Packages,然后:

{
  "name": "@YOUR_GITHUB_USERNAME/my-private-package",
  "version": "1.0.0",
  "publishConfig": {
    "registry": "https://npm.pkg.github.com"
  }
}
登录后复制

3. 使用 GitLab 包

GitLab还提供了内置的包注册表。

3.1 设置 GitLab 包注册表

  1. 导航到您的 GitLab 项目。
  2. 前往设置 -> 包和注册表 -> 包注册表

3.2 配置.npmrc

使用您的 GitLab 凭据创建或更新本地/全局 .npmrc 文件:

npm publish
登录后复制

3.3 发布到GitLab

更新您的 package.json 范围以匹配 GitLab 组或用户命名空间:

npm install @YOUR_GITHUB_USERNAME/my-private-package
登录后复制

然后发布:

# Install Verdaccio globally
npm install --global verdaccio
登录后复制
登录后复制
登录后复制

3.4 从 GitLab 包安装

verdaccio
登录后复制
登录后复制
登录后复制

4. 使用 Sonatype Nexus 或 JFrog Artifactory 自托管

如果您正在寻找支持多种存储库类型的强大的本地解决方案,Sonatype NexusJFrog Artifactory 可能是您的最佳选择。

4.1 Nexus 存储库

  1. 在您的服务器或开发计算机上安装 Nexus Repository Manager。
  2. 登录 Nexus UI:http://your-nexus-server:8081。
  3. 存储库设置创建一个新的npm(托管)存储库。
  4. 配置身份验证(如果需要)并记下 URL。

使用类似的 .npmrc 设置将您的 npm 客户端指向新的 Nexus npm 存储库:

storage: ./storage
auth:
  htpasswd:
    file: ./htpasswd
    max_users: 100

uplinks:
  npmjs:
    url: https://registry.npmjs.org/

packages:
  '@*/*':
    access: $all
    publish: $authenticated
    proxy: npmjs

  '**':
    access: $all
    publish: $authenticated
    proxy: npmjs

middlewares:
  audit:
    enabled: true

logs:
  - { type: stdout, format: pretty, level: http }
登录后复制
登录后复制

照常发布您的包:

npm adduser --registry http://localhost:4873
登录后复制
登录后复制

4.2 JFrog 人工工厂

  1. 安装并启动 Artifactory。
  2. 在 Artifactory UI 中,为 npm 创建一个 本地存储库
  3. 类似地配置 .npmrc:
npm publish --registry http://localhost:4873
登录后复制
登录后复制

发布使用:

  npm install <package-name> --registry http://localhost:4873
登录后复制
登录后复制

5.npm 企业版

对于需要完全控制、审核和高级安全性的大型组织,npm Enterprise 是一个选择。它提供:

  • 单点登录 (SSO) 集成。
  • 增强的安全扫描和审核。
  • 细粒度访问控制

请参阅 npm Enterprise 文档以获取设置说明。


最佳实践和技巧

  1. 使用范围:确定私有包(@company/your-package)的范围有助于将它们与公共包区分开来。
  2. .npmrc 管理
    • 使用每个项目 .npmrc 文件以避免混淆。
    • 使凭证不受版本控制。
  3. 使用 CI/CD 实现自动化:将发布步骤集成到 CI/CD 管道中以确保一致性。
  4. 设置代理:大多数自托管注册表可以代理公共 npm 注册表,因此您无需在注册表之间切换来安装常见依赖项。
  5. 监控和审核:跟踪注册表中的下载、版本和活动。

结论

设置私有 npm 存储库让您可以自由地安全地管理和托管自己的包。无论您是使用 Verdaccio 等自托管解决方案、利用 GitHub Packages 或 GitLab Packages 等托管解决方案,还是选择 Nexus、Artifactory 或 npm Enterprise 等企业解决方案,基本原理都是一样的:

  1. 配置注册表。
  2. 设置身份验证。
  3. 发布并使用您的包。

选择最适合您组织在安全性、可扩展性和维护方面的要求的方法。通过上面的示例和代码片段,您应该拥有坚实的基础来开始托管您自己的私有 npm 包。快乐编码!

以上是私有 npm 存储库的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板