プライベートプロジェクトに GitLab を使用しています。 githubから分岐したライブラリがいくつかあり、npmモジュールとしてインストールします。そのモジュールをnpmから直接インストールするのは問題ありません。たとえば次のようになります。
npm install git://github.com/FredyC/grunt-stylus-Sprite.git
...正しく動作しますが、GitLabでも同じことを行い、ドメインを変更するだけでこのエラーが発生します。
npm WARN `git config --get remote.Origin.url` returned wrong result (git://git.domain.com/library/grunt-stylus-Sprite.git)
npm ERR! git clone git://git.domain.com/library/grunt-stylus-Sprite.git Cloning into bare repository 'D:\users\Fredy\AppData\Roaming\npm-cache\_git-remotes\git-git-domain-com-library-grunt-stylus-Sprite-git-6f33bc59'...
npm ERR! git clone git://git.domain.com/library/grunt-stylus-Sprite.git fatal:unable to connect to git.domain.com:
npm ERR! git clone git://git.domain.com/library/grunt-stylus-Sprite.git git.domain.com[0: 77.93.195.214]: errno=No error
npm ERR! Error: Command failed: Cloning into bare repository 'D:\users\Fredy\App
Data\Roaming\npm-cache\_git-remotes\git-git-domain-com-library-grunt-stylus-spr
ite-git-6f33bc59'...
npm ERR! fatal: unable to connect to git.domain.com:
npm ERR! git.domain.com[0: xx.xx.xx.xx]: errno=No error
GitLabのWebインターフェイスから、このURL [email protected]:library/grunt-stylus-Sprite.git
があります。 npm install
に対してこれを実行すると、npmレジストリからgit
モジュールをインストールしようとします。
しかし、URL [[email protected]:library/grunt-stylus-Sprite.git
]を使用すると、突然パスワードの入力を求められます。私のSSHキーにはパスフレーズが含まれていないため、そのキーをロードできなかったと思います。たぶん私が見逃しているいくつかの構成がありますか?キーは、"id_rsa"
という名前でホームディレクトリの標準の場所にあります。
Windows 7 x64を使用しています。
UPDATE
NPM v3以降、GitLabおよびその他のソース(BitBucket、Gist)の組み込みサポートがあり、そこからパッケージをインストールできます。残念なことに、これは公開されているものでのみ機能するため、これと正確に関連するわけではありませんが、役に立つものもあるでしょう。
npm install gitlab:<gitlabname>/<gitlabrepo>[#<commit-ish>]
ドキュメントをご覧ください: https://docs.npmjs.com/cli/install
プライベートgitlabリポジトリに接続するには、次の方法があります
SSHを使用
git+ssh://[email protected]:Username/Repository#{branch|tag}
git+ssh://[email protected]/Username/Repository#{branch|tag}
HTTPSを使用
git+https://[email protected]/Username/Repository#{branch|tag}
HTTPSおよびデプロイトークンを使用
git+https://<token-name>:<token>@gitlab.com/Username/Repository#{branch|tag}
git://
の代わりにgit+ssh://
を使用すると、npmは正しいことを行うはずです。
更新
@felixがコメント(@felixに感謝)で言及したように、deploy token
を使用することは、gitlab
のプライベートレジストリを読み取るのにより適しています。これにより、トークンが侵害され、攻撃者はそのリポジトリを読み取ることができ、変更を加えることができません。
GitLab
アカウントにログインします。Expand
」をクリックします。read_repository
古い回答
User Settings > Access Tokens
に移動し、access token
権限で新しいread_registry
を作成します。
生成されたtoken
をコピーします。package.json
ファイルに必要です。
次に、package.json
で、以下のようにdependency
を追加します。
"my-module": "git+https://Xaqron:[email protected]/Xaqron/my-module"
Xaqron
をユーザー名に、token
を生成されたトークンに置き換えます。 #{branch|tag}
により、urlの末尾にbranch
とtag
を指定できます。
注:アクセストークンはpackage.json
にあるため、このプロジェクトにアクセスできる人は誰でもリポジトリを読み取ることができるため、プロジェクトはプライベートであると想定します。自体。
質問はGitlabについてですが、この質問はGoogle検索で非常によくランク付けされているので、Githubで得た同様の問題を修正する方法に関する詳細情報を以下に示します。
私にとっては、URLを変更しただけでは機能しませんでした。これを修正するために私が取らなければならなかったステップはここにあります:
git+ssh://[email protected]:owner/repo.git#master
~/.ssh/config
ファイルが存在しない場合は作成します)、デフォルトのsshキーの代わりにDeployKeyの使用を強制しますその後、npmインストールは単純に機能しました。他のすべてのオプションとソリューションは、npmインストールが壊れた結果です
これに遭遇した他の人のために、私はそれをHTTPSで動作させることができませんでした-リポジトリへの直接リンクをサポートしていないようです(例えばhttps://git.domain.com/user/somerepo.git
)、または.tar
、.tar.bz
、.Zip
アーカイブバージョン。
.tar.gz
アーカイブでのみ動作するようです。
完全な例(タグ付きバージョン):
https://git.domain.com/user/somerepo/repository/archive.tar.gz?ref=v1.2.3
どこがおかしいのかがわかる限り、git://
プロトコルがあります。 GitLabは、クローンのHTTPとSSHのみをサポートします。したがって、gitプロトコルの代わりにこれらのメソッドのいずれかを使用する必要があります。
私にとっては、package.jsonを以下のように設定します。
"dependencies": {
"<module-name>": "git+http://<username>:<token>@url.git",
}
トークンは、「プロファイル設定-アクセストークン」から取得されます。
私用のgitlab.comリポジトリでは、他の回答はどれも役に立ちませんでした...
ただし、これは機能します。
npm i -S git+ssh://[email protected]:<org>/<project>.git
プロジェクトページの「clone」入力フィールドからのgit ssh clone urlと、その前面にgit+ssh://
が追加されています。