Node.js 在单个命令中安装专用和公用NPM包

Node.js 在单个命令中安装专用和公用NPM包,node.js,npm,Node.js,Npm,我在package.json文件中列出了几个npm包,一些是公共的,一些是私有的。我想使用npm install在一个命令中安装这两种类型的软件包 如果npm注册表设置为全局,私有包显示404,那么如何通过单个命令实现这一点。我希望两种类型的包都安装在节点_模块上 npm--usercofig=./.npmrccorp i:这将安装package.json中提到的模块,同时考虑--userconfig参数提供的配置文件。最后一个i和install可以互换。也可以将其重写为npm--usercof

我在package.json文件中列出了几个npm包,一些是公共的,一些是私有的。我想使用
npm install
在一个命令中安装这两种类型的软件包

如果npm注册表设置为全局,私有包显示
404
,那么如何通过单个命令实现这一点。我希望两种类型的包都安装在节点_模块上

npm--usercofig=./.npmrccorp i
:这将安装
package.json
中提到的模块,同时考虑
--userconfig
参数提供的配置文件。最后一个
i
install
可以互换。也可以将其重写为
npm--usercofig=./.npmrccorp
install

要使用单个
npm--usercofig=./.npmrccorp i
命令安装私有和公共软件包,您需要在
package.json
dependencies节点中维护
依赖项
,然后应该有一个.npmrccorp文件包含您的身份验证令牌,如下所示:

package.json

{
  "dependencies": {
    "@org/package1": "^1.0.14",
    "@org/package2": "^1.0.0",
    "public package1": "^1.5.0",
    "public package1": "^2.117.0",
   }
}
.npmrccorp

//registry.npmjs.org/:_authToken=a*******-****-****-****-***********1 (32 bit authentication token)

更快的解决方案是@Hugomarsco在评论部分提出的。我假设您的私有包位于任何注册表(A)中,并且剩余的内容是从NPMJ(B)获取的

为了更清楚地说明这一点,您可以使用和设置多个注册表作为上行链路,如图所示

您的上行配置可能如下所示

uplinks:
  npmjsA:
   url: https://registry.npmjs.org/
  registryB:
    url: http://mirror.local.net/
然后通过模式定义对每个远程服务器的包访问

packages:
  'my-private-*':
     access: $authenticated
     publish: $authenticated  
     proxy: registryB    
  '**':
     access: all
     publish: $authenticated
     proxy: npmjs  
这样,您就可以在verdaccio为您提取属于任何公共注册中心的NPMJ时安全地访问您的私人软件包

在你的终端机上,就这么做吧

npm set registry http://localhost:4873 
npm install

你已经准备好了。我希望这会有所帮助。

在完成所有实验后,我将所有私有包作为一个范围包上传到服务器。与
@private/jsonwrite
一样,
@private
是我的作用域名称。然后我在
.npmrc

@private:registry=https://npmjs.my-private-repo.net

然后只需运行
npm安装
,即可在远程和全局软件包上运行。这是从
.npmrc
给定链接下载的限定范围的包,以及从global npm下载的其他包。

据我所知,如果没有以下任何一项,这是不可能的:-如果找不到包,则返回到公共注册表的私有注册表-像Verdaccio这样的注册表代理(此处的更多信息:)要使其工作,应该有一个
.npmrccorp
文件,其中包含项目根路径处的私有模块。是现在吗?是的,现在,你能分享你的想法吗。github gist中的nprccorp。那应该对我有帮助。