私有 npm 存储库
下面是有关如何设置私有 npm 存储库的深入指南,包括各种替代方案和实用的代码片段,可帮助您入门。无论您是独立开发人员还是大型团队的一员,私下托管您自己的 npm 包都可以为您提供控制力、灵活性和更高的安全性。
为什么使用私有 npm 存储库?
- 安全和控制:将您的包和代码保留在内部。
- 更快的构建:减少外部依赖和网络延迟。
- 访问管理:控制谁可以访问或发布某些包。
- 版本控制和存档:维护内部包的多个版本,而不会造成混乱或外部中断。
托管私有 npm 存储库的常见方法
-
自托管解决方案
- Verdaccio:流行的开源轻量级 npm 代理注册表。
- Sonatype Nexus:用于托管多种存储库格式(npm、Maven 等)的综合平台。
- JFrog Artifactory:广泛使用的二进制存储库管理器。
-
由 Git 主机管理
- GitHub 包:在 GitHub 组织内托管私有 npm 包。
- GitLab Packages:提供内置的 npm 注册表作为 GitLab DevOps 平台的一部分。
- Bitbucket(通过第三方集成或自定义解决方案)。
-
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 包
- 转到 GitHub 上的存储库。
- 点击设置 -> 套餐。
- 确保为您的组织/帐户启用 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 包注册表
- 导航到您的 GitLab 项目。
- 前往设置 -> 包和注册表 -> 包注册表。
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 Nexus 或 JFrog Artifactory 可能是您的最佳选择。
4.1 Nexus 存储库
- 在您的服务器或开发计算机上安装 Nexus Repository Manager。
- 登录 Nexus UI:http://your-nexus-server:8081。
- 从存储库设置创建一个新的npm(托管)存储库。
- 配置身份验证(如果需要)并记下 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 人工工厂
- 安装并启动 Artifactory。
- 在 Artifactory UI 中,为 npm 创建一个 本地存储库。
- 类似地配置 .npmrc:
npm publish --registry http://localhost:4873
发布使用:
npm install <package-name> --registry http://localhost:4873
5.npm 企业版
对于需要完全控制、审核和高级安全性的大型组织,npm Enterprise 是一个选择。它提供:
- 单点登录 (SSO) 集成。
- 增强的安全扫描和审核。
- 细粒度访问控制。
请参阅 npm Enterprise 文档以获取设置说明。
最佳实践和技巧
- 使用范围:确定私有包(@company/your-package)的范围有助于将它们与公共包区分开来。
-
.npmrc 管理:
- 使用每个项目 .npmrc 文件以避免混淆。
- 使凭证不受版本控制。
- 使用 CI/CD 实现自动化:将发布步骤集成到 CI/CD 管道中以确保一致性。
- 设置代理:大多数自托管注册表可以代理公共 npm 注册表,因此您无需在注册表之间切换来安装常见依赖项。
- 监控和审核:跟踪注册表中的下载、版本和活动。
结论
设置私有 npm 存储库让您可以自由地安全地管理和托管自己的包。无论您是使用 Verdaccio 等自托管解决方案、利用 GitHub Packages 或 GitLab Packages 等托管解决方案,还是选择 Nexus、Artifactory 或 npm Enterprise 等企业解决方案,基本原理都是一样的:
- 配置注册表。
- 设置身份验证。
- 发布并使用您的包。
选择最适合您组织在安全性、可扩展性和维护方面的要求的方法。通过上面的示例和代码片段,您应该拥有坚实的基础来开始托管您自己的私有 npm 包。快乐编码!
以上是私有 npm 存储库的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

JavaScript是现代Web开发的基石,它的主要功能包括事件驱动编程、动态内容生成和异步编程。1)事件驱动编程允许网页根据用户操作动态变化。2)动态内容生成使得页面内容可以根据条件调整。3)异步编程确保用户界面不被阻塞。JavaScript广泛应用于网页交互、单页面应用和服务器端开发,极大地提升了用户体验和跨平台开发的灵活性。

JavaScript的最新趋势包括TypeScript的崛起、现代框架和库的流行以及WebAssembly的应用。未来前景涵盖更强大的类型系统、服务器端JavaScript的发展、人工智能和机器学习的扩展以及物联网和边缘计算的潜力。

不同JavaScript引擎在解析和执行JavaScript代码时,效果会有所不同,因为每个引擎的实现原理和优化策略各有差异。1.词法分析:将源码转换为词法单元。2.语法分析:生成抽象语法树。3.优化和编译:通过JIT编译器生成机器码。4.执行:运行机器码。V8引擎通过即时编译和隐藏类优化,SpiderMonkey使用类型推断系统,导致在相同代码上的性能表现不同。

JavaScript是现代Web开发的核心语言,因其多样性和灵活性而广泛应用。1)前端开发:通过DOM操作和现代框架(如React、Vue.js、Angular)构建动态网页和单页面应用。2)服务器端开发:Node.js利用非阻塞I/O模型处理高并发和实时应用。3)移动和桌面应用开发:通过ReactNative和Electron实现跨平台开发,提高开发效率。

本文展示了与许可证确保的后端的前端集成,并使用Next.js构建功能性Edtech SaaS应用程序。 前端获取用户权限以控制UI的可见性并确保API要求遵守角色库

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

从C/C 转向JavaScript需要适应动态类型、垃圾回收和异步编程等特点。1)C/C 是静态类型语言,需手动管理内存,而JavaScript是动态类型,垃圾回收自动处理。2)C/C 需编译成机器码,JavaScript则为解释型语言。3)JavaScript引入闭包、原型链和Promise等概念,增强了灵活性和异步编程能力。

我使用您的日常技术工具构建了功能性的多租户SaaS应用程序(一个Edtech应用程序),您可以做同样的事情。 首先,什么是多租户SaaS应用程序? 多租户SaaS应用程序可让您从唱歌中为多个客户提供服务
