【问题标题】:Private and Public NPM Package Install in Single Command在单个命令中安装私有和公共 NPM 包
【发布时间】:2018-04-25 02:19:56
【问题描述】:

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

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

【问题讨论】:

  • 据我所知,如果没有以下条件之一,这是不可能的: - 如果找不到包,私有注册表会回退到公共注册表 - 像 Verdaccio 这样的注册表代理(更多信息:stackoverflow.com/questions/48417082/…

标签: node.js npm


【解决方案1】:

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

为了更清楚起见,您可以使用verdaccio 并将您的多个注册表设置为上行链接,如图所示。

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

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 为您获取那些属于任何公共注册表的 npmjs。

在你的终端里做

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

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

【讨论】:

    【解决方案2】:

    npm --usercofig=./.npmrccorp i :这将安装package.json 中提到的模块,同时考虑--userconfig 参数提供的配置文件。最后一个iinstall 可以互换。这也可以改写为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)
    

    【讨论】:

    • 为此,项目的根路径应该有一个包含私有模块的.npmrccorp 文件。它存在吗?
    • 是的,目前可以分享你的吗? github gist 中的 nprccorp。这应该对我有帮助。
    【解决方案3】:

    完成所有实验后,我将所有私有包作为范围包上传到服务器。就像@private/jsonwrite@private 是我的作用域名称。然后我在.npmrc 中写下面的配置

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-14
      • 2021-10-28
      • 2023-04-03
      • 2021-12-15
      • 2023-03-14
      • 1970-01-01
      • 2015-12-27
      相关资源
      最近更新 更多