npm安装不在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分支?
默认情况下,NPM依赖项是从NPM存储库中提取的。 作者必须手动将他们软件的新版本上传到NPM存储库,所以在NPM上托pipe的代码的“ @latest
”版本不同于任何地方存在的代码的最新版本(例如在GitHub上)。
根据Sails上的NPM存储库信息页面 ,最新的NPM托pipe版本是0.9.16
而当前的GitHub版本是0.10.0-rc3
。
如果你想让你的项目依赖特定的分支或者提交一个特定的Git仓库(而不是在NPM仓库上托pipe的版本),NPM开发者已经包含了一个明确的机制来允许这个,在“ Git package.json
文档中的URL作为依赖关系 :
Git URL作为依赖关系
Git的URL可以是这样的forms:
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", ... }
我有一个类似的问题。 通过NPM注册中心,我试图从我在GitHub上看到的一个项目中获得最新信息,如下所示:
//package.json "devDependencies": { "foo-package": "^3.3.0", }
但是我从npm install
得到的代码(在node_modules/
文件夹中观察到)并不是我在GitHub存储库的主分支中看到的。 我很困惑; 因为两者不匹配。
我最终发现: https : //docs.npmjs.com/cli/view ,它揭示了NPM Registry注意到某个特定存储库的一些信息(版本和date)。
// Console example npm view foo-package
在确认GitHub存储库的主分支所需的内容不在NPMregistry中后,我最终将自己的方法Git URL更改为依赖关系 ,就像@apsillers的回答一样。