私有和公共NPM包安装在单个命令中

时间:2018-04-04 18:43:14

标签: node.js npm

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

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

3 个答案:

答案 0 :(得分:2)

更快的解决方案是@hugomarisco在评论部分提出的建议。我假设你的私人包在任何注册表(A)中,其余的是从npmjs(B)获取的。

为了更清楚,您可以使用verdaccio并将多个注册表设置为上行链路,如此处所示。

enter image description here

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

WEB-INF/lib

然后只需通过模式

定义对每个远程的包访问
uplinks:
  npmjsA:
   url: https://registry.npmjs.org/
  registryB:
    url: http://mirror.local.net/

通过这种方式,您可以安全地访问您的私人软件包,而 verdaccio 为您提供属于任何公共注册表的npmjs。

在您的终端中,只需执行

packages:
  'my-private-*':
     access: $authenticated
     publish: $authenticated  
     proxy: registryB    
  '**':
     access: all
     publish: $authenticated
     proxy: npmjs  

然后你就定了。我希望有所帮助。

答案 1 :(得分:0)

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

要使用单npm --usercofig=./.npmrccorp i命令安装私有和公共包,您需要维护dependencies依赖关系节点中的package.json,然后应该有一个包含您的身份验证令牌的.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)

答案 2 :(得分:0)

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

中写下配置
@private:registry=https://npmjs.my-private-repo.net

然后只运行npm install,它适用于远程和全局包。这是从.npmrc给定链接和其他来自全球npm的其他人的范围包下载。