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
なぜならhttps://github.com/visionmedia/express
はウェブページのURLであり、npmモジュールではないからです。この風味を使う:
git+https://[email protected]/visionmedia/express.git
sSHが必要な場合は、このフレーバーを使用してください。
git+ssh://[email protected]/visionmedia/express.git
Githubからインストールするためにnpm install visionmedia/express
を実行することもできます。
または
npm install visionmedia/express#branch
Gist、Bitbucket、Gitlab、その他多数の特殊フォーマットから直接インストールするためのサポートもあります。 npm install
documentation を見てください。
Gitがインストールされていなければ、試すことができます
npm install --save https://github.com/Amitesh/gulp-rev-all/tarball/master
別のブランチを使うためのnpm install https://github.com/{USER}/{REPO}/tarball/{BRANCH}
もあります。
2016年9月の更新
バニラhttpsのgithub URLからのインストールでも動作するようになりました。
npm install https://github.com/fergiemcdowall/search-index.git
編集: あなたがソース管理システムから読んでいるので、すべてのモジュールに対してこれを行うことができないとコメントしている何人かのユーザーがいます。明確にするために(言うまでもありませんが): リポジトリのコードがnpmで使える状態にあることを考えると 、githubから直接うまくインストールできます。
Peter Lyonsによる現在のトップアンサーは、最近のNPMバージョンとは関係ありません。たとえば、この回答で批判されたのと同じコマンドを使用しても問題ありません。
$ npm install https://github.com/visionmedia/express
問題が解決しない場合は、使用しているパッケージに問題がある可能性があります。
これらの方法は、 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を更新する必要があるでしょう。
_ update _ これであなたはできる:npm install git://github.com/foo/bar.git
またはpackage.json
内:
"dependencies": {
"bar": "git://github.com/foo/bar.git"
}
構文の一般的な形式は次のとおりです。
<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
直接インストールしてください。
npm install visionmedia/express
あるいは、"express": "github:visionmedia/express"
ファイルの"dependencies"
セクションにpackage.json
を追加してから、以下を実行することもできます。
npm install
あなたもできる
npm i alex-cory/fasthacks
または
npm i github:alex-cory/fasthacks
基本的に:
npm i user_or_org/repo_name
次のように、npm install
コマンドでgithubリポジトリを直接インストールすることができます。npm install https://github.com/futurechallenger/npm_git_install.git --save
注: npmコマンドでインストールされるリポジトリで:
シンプル:
npm install *GithubUrl*.git --save
例:
npm install https://github.com/visionmedia/express.git --save