web-dev-qa-db-ja.com

npm installはGitHubに最新バージョンをインストールしません

「sails-mongo」というモジュールがあり、次のコマンドを使用して最新バージョンに更新します。

npm update sails-mongo --save

また、アンインストールしてから再度インストールしてみました。私は試した sails-mongo@latestおよびsails-mongo@beta

問題:GitHub上の現在のバージョン(master)package.json ( https://github.com/balderdashy/sails-mongo/blob/master/package.json )ファイルの内容:

"dependencies": {
  "async": "~0.2.9",
  "lodash": "~2.4.1",
  "mongodb": "1.4.2",
  "waterline-errors": "~0.10.0"
},

そして、更新されているもので

"dependencies": {
  "async": "0.2.10",
  "underscore": "1.5.2",
  "underscore.string": "2.3.3",
  "mongodb": "~1.3.23"
},

マスターブランチを取得する唯一の方法は、コマンドnpm install git+https://github.com/balderdashy/sails-mongo

なぜsails-mongo@latest masterブランチをインストールしますか?

36
user2867106

デフォルトでは、NPMの依存関係はNPMリポジトリから取得されます。作成者は、ソフトウェアの新しいバージョンをNPMリポジトリに手動でアップロードする必要があるため、NPMでホストされるコードの「_@latest_」バージョンは、どこかに存在する最新バージョンのコード(GitHubなど)とは異なります。

NPMリポジトリの Sailsの情報ページ によると、NPMがホストする最新バージョンは_0.9.16_であり、 現在のGitHubバージョン は_0.10.0-rc3_です。

プロジェクトを(NPMリポジトリでホストされているバージョンではなく)特定のGitリポジトリの特定のブランチまたはコミットに依存させる場合、NPM開発者はこれを許可する明示的なメカニズムを含めています。 依存関係としてのGit URL " _package.json_ docs

依存関係としてURLをGit

GitのURLの形式は次のとおりです。

_git://github.com/user/project.git#commit-ish
git+ssh://user@hostname:project.git#commit-ish
git+ssh://user@hostname/project.git#commit-ish
git+http://user@hostname/project/blah.git#commit-ish
git+https://user@hostname/project/blah.git#commit-ish
_

_commit-ish_は、_git checkout_への引数として提供できる任意のタグ、sha、またはブランチにすることができます。デフォルトはmasterです。

実際、依存関係として Github.comリポジトリを使用 する方が簡単です:

バージョン1.1.65では、GitHubのURLを_"foo": "user/foo-project"_として参照できます。例えば:

_{
  "name": "foo",
  "version": "0.0.0",
  "dependencies": {
    "express": "visionmedia/express"
  }
}
_

そのため、Sails GitHubリポジトリを使用するには、単に以下を使用します。

_"dependencies": {
  "sails": "balderdashy/sails-mongo",
  ...
}
_

また、2014年4月28日の時点でGitHubに存在するSailsの正確な状態を使用するには、次を使用します。

_"dependencies": {
  "sails": "git://github.com/balderdashy/sails-mongo#b9cdce9a48",
  ...
}
_
44
apsillers

同様の問題がありました。 NPMレジストリを介して、GitHubで見たプロジェクトの最新情報を次のように取得しようとしました。

//package.json
"devDependencies": {
    "foo-package": "^3.3.0",
}

しかし、私はnpm installnode_modules/ folder)は、GitHubリポジトリのmasterブランチで見たものではありませんでした。私は混乱していた; 2つが一致しなかったため。

最終的に見つけたのは https://docs.npmjs.com/cli/view で、特定のリポジトリについてNPMレジストリが認識している情報(バージョンと日付)を明らかにします。

// Console example
npm view foo-package

GitHubリポジトリのmasterブランチに必要なものがNPMレジストリにないことを確認した後、@ apsillersが答えるように、最終的にアプローチを変更しました Git URLs as Dependencies

1
Michael R