如何使用多个嵌套的私有节点模块?

Posted

技术标签:

【中文标题】如何使用多个嵌套的私有节点模块?【英文标题】:How to use multiple nested private node modules? 【发布时间】:2016-04-10 05:47:44 【问题描述】:

以下是我的项目结构

Base Application
  |
  |----Node Module 1 
  |       |
  |       |----Node Module 2
  |
  |----Node Module 2

所有这些都是私有存储库。我在基础应用程序的 package.json

中添加了以下内容

name: "Base Application",
  dependencies: 
  ..
  node-module1: "git+https://github.com/abc/node-module1.git",
  node-module2: "git+https://github.com/abc/node-module2.git",
  ..
  

我使用HTTPS 版本(https://github.com/abc/base-application.git)克隆了我的存储库,它提示我输入用户名和密码。克隆后,当我尝试执行npm install 时,出现以下错误

npm ERR! Cloning into bare repository '/home/ubuntu/.npm/_git-remotes/git-https-github-com-abc-node-module1-git-3bd17fdf3s45ae0sdfadf68sdegk72e3'...
npm ERR! remote: Invalid username or password.
npm ERR! fatal: Authentication failed for 'https://github.com/abc/node-module1.git/'

经过一番挖掘,我修改了我的package.json 以包含建议的版本here。


name: "Base Application",
  dependencies: 
  ..
  node-module1: "git+https://github.com/abc/node-module1.git#v0.0.1",
  node-module2: "git+https://github.com/abc/node-module2.git#v0.0.1",
  ..
  

这行得通。但问题是我被提示输入用户名和密码多次。这也将导致每次进行一分钟更改时在节点模块中创建一个版本的复杂性。

那么我如何使用私有节点模块,就像我们使用公共节点模块一样。

【问题讨论】:

尝试使用 http 而不是 https 进行克隆。 https 需要用户名密码,因此您必须传递或存储它们以进行克隆 【参考方案1】:

除了版本,你也可以引用一个特定的分支,比如master,这样你就不需要每次提交都碰版本。

"node-module1": "git://github.com/abc/node-module1.git#master"

但是,我建议坚持使用 semantic versioning,并考虑设置您自己的私有 NPM 存储库,例如 https://github.com/rlidwka/sinopia。要在另一个模块/应用程序中测试正在开发的模块,您可以使用npm link,然后在完成后发布版本化模块,每当您进行与 API 不兼容的更改时,总是会影响主要版本。

【讨论】:

【参考方案2】:

检查您是否在package.json 中表明自己的身份,如“How to use private Github repo as npm dependency”中所述

https 和 oauth:create an access token 具有“repo”范围,然后使用以下语法:

"package-name": "git+https://<github_token>:x-oauth-basic@github.com/<user>/<repo>.git"

这样,npm install 应该可以访问这些私有存储库,而无需再次询问凭据。

【讨论】:

以上是关于如何使用多个嵌套的私有节点模块?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用嵌套路由和私有路由组件在 react.js 中正确构建路由?

从 Gitlab 私有存储库导入节点模块时出错

如何发布Android Library到maven私有仓库

如何拥有与公共数组成员关联的私有数据?

如何访问嵌套类中的私有类方法

如何访问嵌套类的私有成员?