web-dev-qa-db-ja.com

GitHubから直接npmパッケージをインストールする方法?

Githubからモジュールをインストールしようとすると次のようになります。

Package.jsonでENOENTエラーが発生しました。

Expressを使って簡単に再現:

npm install https://github.com/visionmedia/expressはエラーをスローします。

npm install expressは動作します。

どうしてgithubからインストールできないのですか?

これはコンソール出力です:

npm http GET https://github.com/visionmedia/express.git
npm http 200 https://github.com/visionmedia/express.git
npm ERR! not a package /home/guym/tmp/npm-32312/1373176518024-0.6586997057311237/tmp.tgz
npm ERR! Error: ENOENT, open '/home/guym/tmp/npm-32312/1373176518024-0.6586997057311237/package/package.json'
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <[email protected]>

npm ERR! System Linux 3.8.0-23-generic
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install" "https://github.com/visionmedia/express.git"
npm ERR! cwd /home/guym/dev_env/projects_GIT/proj/somename
npm ERR! node -v v0.10.10
npm ERR! npm -v 1.2.25
npm ERR! path /home/guym/tmp/npm-32312/1373176518024-0.6586997057311237/package/package.json
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /home/guym/dev_env/projects_GIT/proj/somename/npm-debug.log
npm ERR! not ok code 0
724
guy mograbi

なぜならhttps://github.com/visionmedia/expressはウェブページのURLであり、npmモジュールではないからです。この風味を使う:

git+https://[email protected]/visionmedia/express.git

sSHが必要な場合は、このフレーバーを使用してください。

git+ssh://[email protected]/visionmedia/express.git
970
Peter Lyons

Githubからインストールするためにnpm install visionmedia/expressを実行することもできます。

または

npm install visionmedia/express#branch

Gist、Bitbucket、Gitlab、その他多数の特殊フォーマットから直接インストールするためのサポートもあります。 npm installdocumentation を見てください。

574
user2487135

Gitがインストールされていなければ、試すことができます

npm install --save https://github.com/Amitesh/gulp-rev-all/tarball/master
128
Amitesh

別のブランチを使うためのnpm install https://github.com/{USER}/{REPO}/tarball/{BRANCH}もあります。

47
zakelfassi

2016年9月の更新

バニラhttpsのgithub URLからのインストールでも動作するようになりました。

npm install https://github.com/fergiemcdowall/search-index.git

編集: あなたがソース管理システムから読んでいるので、すべてのモジュールに対してこれを行うことができないとコメントしている何人かのユーザーがいます。明確にするために(言うまでもありませんが): リポジトリのコードがnpmで使える状態にあることを考えると 、githubから直接うまくインストールできます。

40
Fergie

Peter Lyonsによる現在のトップアンサーは、最近のNPMバージョンとは関係ありません。たとえば、この回答で批判されたのと同じコマンドを使用しても問題ありません。

$ npm install https://github.com/visionmedia/express

問題が解決しない場合は、使用しているパッケージに問題がある可能性があります。

34
Colin D

これらの方法は、 npmのインストールドキュメント およびその他の多数の回答でカバーされています。

npm install git+ssh://[email protected]:<githubname>/<githubrepo.git[#<commit-ish>]
npm install git+ssh://[email protected]:<githubname>/<githubrepo.git>[#semver:^x.x]
npm install git+https://[email protected]/<githubname>/<githubrepo.git>
npm install git://github.com/<githubname>/<githubrepo.git>
npm install github:<githubname>/<githubrepo>[#<commit-ish>]

ただし、最近変更された注目すべき点は、npmがprepareスクリプトを置き換えるためにprepublishスクリプトを追加することです。 これにより、gitを介してインストールされたモジュールがprepublishスクリプトを実行しなかったため、モジュールがnpmレジストリに公開されたときに発生するビルド手順が完了しなかったという長年の問題が修正されます。 https://github.com/npm/npm/issues/3055 を参照してください。

もちろん、モジュール作者はこれを機能させるために新しいprepareディレクティブを使うために彼らのpackage.jsonを更新する必要があるでしょう。

22
nextgentech

_ update _ これであなたはできる:npm install git://github.com/foo/bar.git
またはpackage.json内:

"dependencies": {
  "bar": "git://github.com/foo/bar.git"
}
15
Sagiv Ofek

構文の一般的な形式は次のとおりです。

<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish> | #semver:<semver>]

あなたの場合それはそれになることを意味

npm install git+ssh://[email protected]/visionmedia/express.git

Npmjsのドキュメントから:

npmインストール:

ホストされているgitプロバイダからパッケージをインストールし、それをgitで複製します。フルGitリモートURLの場合、そのURLのみが試行されます。

<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish>

| #semver:]はgit、git + ssh、git + http、git + https、またはgit + fileのいずれかです。

#が指定されている場合は、そのコミットを正確に複製するために使用されます。 commit-ishの形式が#semver:の場合は、任意の有効なsemver範囲または正確なバージョンにすることができ、npmはレジストリ依存関係と同様に、リモートリポジトリでその範囲に一致するタグまたは参照を検索します。 #でも#でも

semver:が指定されている場合は、masterが使用されます。

リポジトリがサブモジュールを利用する場合、それらのサブモジュールもクローンされます。

インストールされるパッケージに準備スクリプトが含まれている場合は、パッケージがパッケージ化されてインストールされる前に、その依存関係とdevDependenciesがインストールされ、準備スクリプトが実行されます。

次のgit環境変数はnpmによって認識され、gitを実行するときに環境に追加されます。

  • GIT_ASKPASS
  • GIT_EXEC_PATH
  • GIT_PROXY_COMMAND
  • GIT_SSH
  • GIT_SSH_COMMAND
  • GIT_SSL_CAINFO GIT_SSL_NO_VERIFY

詳細はgitのmanページを見てください。

例:

npm install git+ssh://[email protected]:npm/npm.git#v1.0.27
npm install git+ssh://[email protected]:npm/npm#semver:^5.0
npm install git+https://[email protected]/npm/npm.git
npm install git://github.com/npm/npm.git#v1.0.27
GIT_SSH_COMMAND='ssh -i ~/.ssh/custom_ident' npm install git+ssh://[email protected]:npm/npm.git npm install
15
ishandutta2007

直接インストールしてください。

npm install visionmedia/express

あるいは、"express": "github:visionmedia/express"ファイルの"dependencies"セクションにpackage.jsonを追加してから、以下を実行することもできます。

npm install
14
Tyler Long

あなたもできる

npm i alex-cory/fasthacks

または

npm i github:alex-cory/fasthacks

基本的に:

npm i user_or_org/repo_name
9
Alex Cory

次のように、npm installコマンドでgithubリポジトリを直接インストールすることができます。npm install https://github.com/futurechallenger/npm_git_install.git --save

注: npmコマンドでインストールされるリポジトリで:

  1. @Dan Dascalescuさんのコメントによると、リポジトリに dist フォルダが必要かもしれません。
  2. あなたは間違いなく package.json をリポジトリに持っていなければなりません!それを忘れてしまいます。
5
Bruce Lee

シンプル:

npm install *GithubUrl*.git --save

例:

npm install https://github.com/visionmedia/express.git --save
4
Khurshid Ansari