如何使用多个嵌套的私有节点模块?
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
应该可以访问这些私有存储库,而无需再次询问凭据。
【讨论】:
以上是关于如何使用多个嵌套的私有节点模块?的主要内容,如果未能解决你的问题,请参考以下文章