我有一个名为“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
安装主分支?
答案 0 :(得分:44)
默认情况下,NPM依赖项是从NPM存储库中提取的。作者必须手动将其软件的新版本上传到NPM存储库,因此" @latest
" NPM上托管的代码版本与任何地方存在的最新版代码不同(例如,在GitHub上)。
根据NPM存储库info page on Sails,最新的NPM托管版本为0.9.16
,而current GitHub version为0.10.0-rc3
。
如果您希望您的项目依赖于特定分支或特定Git仓库的提交(而不是NPM存储库上托管的版本),NPM开发人员已经包含了一个明确的机制来允许这个,详细的in" Git URLs as Dependencies"在package.json
docs:
将网址作为依赖关系
Git网址可以是以下形式:
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
可以是任何标记,sha或分支,可以作为git checkout
的参数提供。默认值为master
。
事实上,use a Github.com repo作为依赖项更容易:
从版本1.1.65开始,您可以将GitHub网址引用为
"foo": "user/foo-project"
。例如:{ "name": "foo", "version": "0.0.0", "dependencies": { "express": "visionmedia/express" } }
因此,要使用Sails GitHub repo,只需使用:
"dependencies": {
"sails": "balderdashy/sails-mongo",
...
}
要使用自2014年4月28日起在GitHub上存在的Sails的确切状态,请使用:
"dependencies": {
"sails": "git://github.com/balderdashy/sails-mongo#b9cdce9a48",
...
}
答案 1 :(得分:1)
我有类似的问题。通过NPM Registry我试图从GitHub中看到的项目中获取最新信息,如下所示:
//package.json
"devDependencies": {
"foo-package": "^3.3.0",
}
但是我从npm install
获取的代码(如node_modules/
文件夹中所示)并不是我在GitHub存储库的主分支中看到的代码。我很困惑;因为两者不匹配。
我最终发现:https://docs.npmjs.com/cli/view,它揭示了NPM注册管理机构为特定存储库所知道的一些信息(版本和日期)。
// Console example
npm view foo-package
在确认我想从GitHub存储库的主分支不在NPM注册表中之后,我最终改变了我的方法Git URLs as Dependencies,就像@apsillers回答一样。