在当代软件开发中,包管理变得日益重要。JavaScript 生态系统,特别是NPM,已成为这一管理的核心组成部分。大部分开发者习惯于使用公共的NPM仓库来轻松地下载和更新所需的包。然而,将所有包公开并不总是最佳选择。这也是私有NPM仓库受到关注的原因,而这背后有几个关键的理由,这些理由会根据企业的特定需求而变得更为明显。在此文章中,我们将深入探讨私有NPM仓库的重要性,并简要介绍其实现方法。
NPM仓库是一个集中存储和共享各种JavaScript包的平台。通常我们所熟知的NPM仓库是公开的,这意味着全球的开发者都可以自由地下载或上传包。那么,为什么我们还需要私有NPM仓库呢?
众多企业都有将其业务逻辑或特定技术转化为包的实践。由于这些包可能包含企业独有的技术或创新思想,将它们公开可能导致竞争优势的丧失。通过使用私有NPM仓库,企业能够确保这些关键包的安全,同时仅在内部共享和使用。
每个项目或团队对于所需的包和权限可能都有所不同。通过私有NPM仓库,企业可以精细地控制对特定包的访问权限,从而预防不必要的访问或更改。
公开的NPM仓库由于需要为全球众多用户提供服务,有时可能会出现网络延迟或宕机情况。而私有NPM仓库由于在内部网络中运行,能够提供更快速的包安装或发布速度。同时,由于不受外部因素影响,可以更为稳定地提供服务。
总之,私有NPM仓库为企业提供了一种保护关键信息、实现精细权限控制以及增强稳定性的方法,即使是初学者也可以通过这些理由理解私有NPM仓库的重要性。
Verdaccio是一个基于Node.js的轻量级私有NPM仓库,可以在任何设备上轻松安装和运行。Verdaccio还可以作为公开NPM仓库的缓存,这意味着即使断开互联网连接,您仍然可以继续使用已下载的包。现在,让我们来看看如何使用Verdaccio构建私有NPM仓库。
Verdaccio可通过npm进行全局安装。
npm install -g verdaccio
使用以下命令启动Verdaccio服务器:
verdaccio
服务器启动后,默认可以通过http://localhost:4873
地址访问。
Verdaccio在发布包之前默认需要用户认证。
npm adduser --registry http://localhost:4873
npm login --registry http://localhost:4873
npm logout --registry http://localhost:4873
移动到您的项目文件夹,然后在package.json
中添加以下publishConfig
:
{
"publishConfig": {
"registry": "http://localhost:4873"
}
}
发布包:
npm publish
要在另一个项目中安装此包,请按照以下方式操作:
npm install [包名] --registry http://localhost:4873
或者,在项目的.npmrc
文件中添加以下内容以将其设置为默认的registry:
registry=http://localhost:4873
这样设置后,仅通过npm install [包名]
也可以通过Verdaccio安装包。
Verdaccio私有NPM仓库的核心是config.yaml
配置文件。通过此文件,您可以定义和调整Verdaccio的操作方式、用户权限和包访问规则。现在,让我们了解一下初学者如何基本配置config.yaml
文件。
当您首次安装并运行Verdaccio时,默认的config.yaml
配置文件通常位于用户的主目录下的.config/verdaccio/
文件夹中。
打开config.yaml
文件,您会发现它被划分为多个部分。每个部分处理Verdaccio的某一特定功能或设置。
以下是一些基本的设置更改方法。
更改端口
listen: 0.0.0.0:6000
上述设置将Verdaccio服务器更改为在6000端口上监听。
设定私有包
私有包指的是只允许特定用户或组访问或部署的包。这意味着,只有经过认证的用户才能下载或上传此类包。
例如,如果您想将公司的内部项目或某个特定团队应使用的代码以npm包的形式管理,您可以使用此功能。
在config.yaml
中如下设置,您可以将特定包设为私有:
packages:
'@mycompany/*':
access: $authenticated
publish: $authenticated
unpublish: $authenticated
上述设置将以@mycompany/*
命名的所有包设为私有,只允许经过认证的用户访问、发布或删除该包。
设置公共包
公共包指的是任何人都可以无限制地访问或下载的包。但为了发布或修改包,可能需要认证。
例如,适用于开源项目或在内部广泛使用的实用程序包可以被设置为公共包。
在config.yaml
中如下设置,您可以将所有包设为公有:
packages:
'**':
access: $all
publish: $authenticated
此设置允许任何人访问所有包,但只有经过认证的用户才能发布或修改它们。
使用外部npmjs.org
Verdaccio默认连接到npm的官方仓库npmjs.org。这意味着,如果Verdaccio不提供某个包,它会从npmjs.org查找并下载该包,然后提供给用户,并同时缓存该包。
在uplinks
部分,您可以管理此类外部连接设置。默认设置如下:
uplinks:
npmjs:
url: https://registry.npmjs.org/
通过此设置,Verdaccio连接到npmjs.org,并在需要时可以在此处连接到其他外部仓库。
保存并重新启动
更改设置后,您需要重新启动Verdaccio服务器以使更改生效。
在现代企业环境中,为了更安全、高效地进行软件开发,私有NPM仓库已成为必不可少的工具。随着越来越多的组织意识到仅使用公共仓库的限制和风险,建立自己的包存储空间的趋势正在迅速增长。通过引入私有NPM仓库,企业可以有效地保护自己的核心技术和信息,并同时最大限度地提高开发效率。因此,引入私有NPM仓库不仅仅是一个选择问题,更是在现代开发环境中的必要策略。
了解Private NPM Registry的重要性并用Verdaccio搭建 |
---|
图像优化:在Node.js中转换并压缩PNG,JPG为WebP |
CloneCoding
创新从一行代码开始!