这是我的问题.我们有一个私有的NPM注册表,只能在VPN中使用.我想有一个后备注册表https://registry.npmjs.org,这样当我离开VPN时,它可以无缝地工作.
PS目前我正在使用npmrc,它可以很好地切换.npmrc文件作为解决方法
小智 147
您可以在文件中为范围包提供多个注册表.npmrc.例如:
@polymer:registry=<url register A>
registry=http://localhost:4873/
Run Code Online (Sandbox Code Playgroud)
@polymer范围内的包将从https://registry.npmjs.org收到,但其余的将从您当地的NPM收到.
Gil*_*dre 53
在版本4.4.1上,如果您可以更改包名称,请使用:
npm config set @myco:registry http://reg.example.com
Run Code Online (Sandbox Code Playgroud)
@myco您的包装范围在哪里.
您可以这样安装包:
npm install @myco/my-package
Run Code Online (Sandbox Code Playgroud)
有关更多信息:https://docs.npmjs.com/misc/scope
Swa*_*der 46
我相信得票最高的答案可能已经过时了。截至2021 年 6 月,有一种更简单的方法可以使用npmrc npm 库来执行此操作。
要安装 npmrc,请在命令行上运行
npm i npmrc -g
安装 npmrc 后,您可以创建一个配置文件来访问您的自定义(可能是公司的)注册表。
要创建 npm Enterprise 配置文件,请在命令行上运行npmrc -c name-of-profile。例如,要创建名为“work”的配置文件,请运行以下命令:
npmrc -c work
要为配置文件设置 npm Enterprise 注册表,请运行以下命令,并替换your-company-registry为您公司的 npm Enterprise 注册表的名称:
npm config set registry https://registry.your-company-registry.npme.io/
创建 npm Enterprise 配置文件后,您可以为不同的注册表(例如公共 npm 注册表)创建第二个配置文件。
要为公共注册表创建配置文件,请在命令行上运行npmrc -c name-of-profile。例如,要创建名为“open-source”的配置文件,请运行npmrc -c open-source. 要为您的开源配置文件设置公共注册表,请运行以下命令:
npm config set registry https://registry.npmjs.org/
要切换配置文件,请在命令行上运行以下命令,并将 profile-name 替换为您的配置文件的名称:
npmrc profile-name
owa*_*786 14
不是最好的方法但是如果你在Windows中使用mac或linux,你可以为不同的注册表设置别名.
##############NPM ALIASES######################
alias npm-default='npm config set registry https://registry.npmjs.org'
alias npm-sinopia='npm config set registry http://localhost:4873/'
Run Code Online (Sandbox Code Playgroud)
Gre*_*gra 14
对于那些也在寻找身份验证解决方案的人,我会添加一个范围包解决方案,您可以在.npmrc文件中包含多行:
//internal-npm.example.com:8080/:_authToken=xxxxxxxxxxxxxxx
//registry.npmjs.org/:_authToken=yyyyyyyyyy
Run Code Online (Sandbox Code Playgroud)
每行代表一个不同的NPM注册表
由于它已经过了几年而且似乎不可能这样做(仅使用npm),这个问题的解决方案是使用Nexus Repository Manager(来自Sonatype).Nexus支持多个存储库,允许您订购它们,以及代理/缓存以提高速度.
存在免费版和专业版/付费版.支持此功能的功能描述如下:https: //help.sonatype.com/repomanager3/node-packaged-modules-and-npm-registries
相关信息在下面重复,因此如果/当上述URL /链接停止工作时,信息仍在此处.
建议使用存储库组将所有npm注册表存储库从存储库管理器公开给用户,而无需进一步的客户端配置.存储库组允许您使用一个URL向npm和其他工具公开多个代理和托管存储库的聚合内容.
它允许您创建私有npm注册表
私有npm注册表可用于上传您自己的包以及第三方包.
和
要减少重复下载并提高开发人员和CI服务器的下载速度,您应该代理https://registry.npmjs.org上托管的注册表.默认情况下,npm直接访问此注册表.您还可以代理您需要的任何其他注册表.
因此,为实现这一目标,您需要做一些快速的项目符号列表:
安装Nexus
创建本地/私人仓库(或指向另一台服务器上的私人仓库)
创建一个列出您的私人仓库和公共仓库的GROUP.
配置$ HOME/.npmrc文件以指向刚刚创建的"GROUP".
将您的私人npm包发布到本地仓库.
用户现在可以运行一次性设置.
npm config set registry https://nexus/content/groups/GROUP
npm install.
npm install my-private-package
npm install lodash any-other-public-package
您可以通过简单的npm install命令安装公共和私有软件包.Nexus找到包搜索组中配置的每个repo并返回结果.因此,npm仍然认为只有一个注册表,但幕后有多个回购正在使用.
重要说明:发布组件时,您需要指定npm publish --registry https://nexus/content/repositories/private-repo my-private-package命令,以便将包发布到正确的存储库.
小智 6
您可以对文件中的registry条目使用多种存储库语法.npmrc:
registry=http://serverA.url/repository-uri/
//serverB.url/repository-uri/
//serverC.url/repository-uri/:_authToken=00000000-0000-0000-0000-0000000000000
//registry.npmjs.org/
Run Code Online (Sandbox Code Playgroud)
这将使您的npm在不同的服务器中查找软件包。
您可以尝试一些步骤。(这就是我们在工作场所的做法)
希望有帮助。
| 归档时间: |
|
| 查看次数: |
73745 次 |
| 最近记录: |