了解Private NPM Registry的重要性并用Verdaccio搭建

在当代软件开发中,包管理变得日益重要。JavaScript 生态系统,特别是NPM,已成为这一管理的核心组成部分。大部分开发者习惯于使用公共的NPM仓库来轻松地下载和更新所需的包。然而,将所有包公开并不总是最佳选择。这也是私有NPM仓库受到关注的原因,而这背后有几个关键的理由,这些理由会根据企业的特定需求而变得更为明显。在此文章中,我们将深入探讨私有NPM仓库的重要性,并简要介绍其实现方法。

为什么需要私有NPM仓库?

NPM仓库是一个集中存储和共享各种JavaScript包的平台。通常我们所熟知的NPM仓库是公开的,这意味着全球的开发者都可以自由地下载或上传包。那么,为什么我们还需要私有NPM仓库呢?

1. 保护企业机密信息

众多企业都有将其业务逻辑或特定技术转化为包的实践。由于这些包可能包含企业独有的技术或创新思想,将它们公开可能导致竞争优势的丧失。通过使用私有NPM仓库,企业能够确保这些关键包的安全,同时仅在内部共享和使用。

2. 细致的权限控制

每个项目或团队对于所需的包和权限可能都有所不同。通过私有NPM仓库,企业可以精细地控制对特定包的访问权限,从而预防不必要的访问或更改。

3. 稳定性和高速性能

公开的NPM仓库由于需要为全球众多用户提供服务,有时可能会出现网络延迟或宕机情况。而私有NPM仓库由于在内部网络中运行,能够提供更快速的包安装或发布速度。同时,由于不受外部因素影响,可以更为稳定地提供服务。

总之,私有NPM仓库为企业提供了一种保护关键信息、实现精细权限控制以及增强稳定性的方法,即使是初学者也可以通过这些理由理解私有NPM仓库的重要性。


使用Verdaccio构建私有NPM仓库

Verdaccio是一个基于Node.js的轻量级私有NPM仓库,可以在任何设备上轻松安装和运行。Verdaccio还可以作为公开NPM仓库的缓存,这意味着即使断开互联网连接,您仍然可以继续使用已下载的包。现在,让我们来看看如何使用Verdaccio构建私有NPM仓库。


安装Verdaccio

Verdaccio可通过npm进行全局安装。

bash
npm install -g verdaccio

启动Verdaccio服务器

使用以下命令启动Verdaccio服务器:

bash
verdaccio

服务器启动后,默认可以通过http://localhost:4873地址访问。

通过浏览器访问Verdaccio服务器的截图
启动服务器后,通过http://localhost:4873地址可以查看已上传的包。

用户添加和登录

Verdaccio在发布包之前默认需要用户认证。

bash
npm adduser --registry http://localhost:4873
npm login --registry http://localhost:4873
npm logout --registry http://localhost:4873

发布包

移动到您的项目文件夹,然后在package.json中添加以下publishConfig

json
{
  "publishConfig": {
    "registry": "http://localhost:4873"
  }
}

发布包:

bash
npm publish

安装包

要在另一个项目中安装此包,请按照以下方式操作:

bash
npm install [包名] --registry http://localhost:4873

或者,在项目的.npmrc文件中添加以下内容以将其设置为默认的registry:

registry=http://localhost:4873

这样设置后,仅通过npm install [包名]也可以通过Verdaccio安装包。


配置Verdaccio的config.yaml文件

Verdaccio私有NPM仓库的核心是config.yaml配置文件。通过此文件,您可以定义和调整Verdaccio的操作方式、用户权限和包访问规则。现在,让我们了解一下初学者如何基本配置config.yaml文件。

文件位置

当您首次安装并运行Verdaccio时,默认的config.yaml配置文件通常位于用户的主目录下的.config/verdaccio/文件夹中。

基本结构

打开config.yaml文件,您会发现它被划分为多个部分。每个部分处理Verdaccio的某一特定功能或设置。

  • 存储 & 包管理: 数据存储方式和包访问规则设定
  • 网页界面: 与网页界面相关的设置
  • 认证: 用户认证方式设定
  • 中间件: 激活或配置附加功能
  • 上游链接: 设置到其他仓库的链接
  • 日志: 日志设置

修改默认设置

以下是一些基本的设置更改方法。

更改端口

yaml
listen: 0.0.0.0:6000 

上述设置将Verdaccio服务器更改为在6000端口上监听。

设定私有包

私有包指的是只允许特定用户或组访问或部署的包。这意味着,只有经过认证的用户才能下载或上传此类包。

例如,如果您想将公司的内部项目或某个特定团队应使用的代码以npm包的形式管理,您可以使用此功能。

config.yaml中如下设置,您可以将特定包设为私有:

yaml
packages:
  '@mycompany/*':
    access: $authenticated
    publish: $authenticated
    unpublish: $authenticated

上述设置将以@mycompany/*命名的所有包设为私有,只允许经过认证的用户访问、发布或删除该包。

设置公共包

公共包指的是任何人都可以无限制地访问或下载的包。但为了发布或修改包,可能需要认证。

例如,适用于开源项目或在内部广泛使用的实用程序包可以被设置为公共包。

config.yaml中如下设置,您可以将所有包设为公有:

yaml
packages:
  '**':
    access: $all
    publish: $authenticated

此设置允许任何人访问所有包,但只有经过认证的用户才能发布或修改它们。

使用外部npmjs.org

Verdaccio默认连接到npm的官方仓库npmjs.org。这意味着,如果Verdaccio不提供某个包,它会从npmjs.org查找并下载该包,然后提供给用户,并同时缓存该包。

uplinks部分,您可以管理此类外部连接设置。默认设置如下:

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

通过此设置,Verdaccio连接到npmjs.org,并在需要时可以在此处连接到其他外部仓库。

保存并重新启动

更改设置后,您需要重新启动Verdaccio服务器以使更改生效。


在现代企业环境中,为了更安全、高效地进行软件开发,私有NPM仓库已成为必不可少的工具。随着越来越多的组织意识到仅使用公共仓库的限制和风险,建立自己的包存储空间的趋势正在迅速增长。通过引入私有NPM仓库,企业可以有效地保护自己的核心技术和信息,并同时最大限度地提高开发效率。因此,引入私有NPM仓库不仅仅是一个选择问题,更是在现代开发环境中的必要策略。

© Copyright 2023 CLONE CODING