npm git 存储库不更新版本
Posted
技术标签:
【中文标题】npm git 存储库不更新版本【英文标题】:npm git repository not updating versions 【发布时间】:2013-02-28 07:43:03 【问题描述】:我有一个 git 存储库,我正在尝试将其设置为我的项目中的依赖项。
使用 NPM,我的 package.json
看起来像这样:
"devDependencies":
"grunt": "~0.4.0",
"grunt-contrib-connect": "~0.2.0",
"grunt-contrib-watch": "~0.3.1",
"custom": "git://github.com/myGitHubRepo/repo.js.git#b7d53a0cfbe496ad89bde6f22324219d098dedb3",
"grunt-contrib-copy": "~0.4.0"
第一个
npm install
它安装所有东西并毫无问题地获取存储库。但是,如果我将这个提交哈希更改为让我们说
"custom": "git://github.com/myGitHubRepo/repo.js.git#d6da3a0...", // a different one
它不会更新!谁能指出我怎么会得到这种行为?
我只是想分享这段代码,并且能够在某个时候更改这个版本,npm
会自动更新这个。
【问题讨论】:
第二次尝试npm install
时是否遇到任何错误?此外,package.json
中的 "name"
或 "version"
在这些提交之间的值是否发生变化?
你在更新package.json中的版本号吗?
我不明白你们的意思。依赖关系就像“名称”:“版本”,对吗?所以在这种情况下是“自定义”:“git-hub-url#commit-hash”。如果我更改“commit-hash”部分,就好像它是一个新版本,不是吗?或者我应该在其他地方声明这个依赖名称?
@JonathanLonowski 没有。它简单地等待一点(我的印象是它在 git 中查找)然后返回而没有错误。 npm update 根本不做任何事情
其实我只是尝试在package.json中更改应用程序的版本号,在“npm install”之后仍然没有更新git依赖到正确的commit-hash
【参考方案1】:
好的,这就是它的完成方式。
我也很困惑。
所以我在 git@github.com:myModule/MySweetModule.git 有一个私有 npm 模块
我刚刚发布了最新的标记版本。不幸的是,我无法弄清楚它是如何工作的,但它对你的主人很有效。 SOOO 你的主分支可以是你的集成分支,你有阶段分支来构建下一个版本。版本完成后,只需将其合并到 master 并增加您的私有 repo 的版本(因此您的私有 repo 现在从 1.0.0 变为 1.0.1)。如果你打电话给npm install
,如果 master 的 package.json 版本大于当前的工作 repo,它将更新你的 repo。它总是需要最新的 repo。
好像很烂
我同意。所以让我们做一个更好的方法!如果您 tags
为您的私人仓库发布,您可以通过 "custom": "git+ssh://git@github.com:usr/proj.git#TAG_NAME"
引用它们
所以我有一个名为0.1.0
的标签,然后我会像这样对 package.json 中的 url 进行版本控制。 "custom": "git+ssh://git@github.com:usr/proj.git#0.1.0"
我相信这是回答您问题的最佳方法。但我不是 gitanista
警告
如果您尝试返回某个版本,它似乎不起作用。所以从版本0.2.2
到0.2.1
它不会更新你的项目。如果您回滚版本,请确保您执行npm remove myProj
然后npm install
。
【讨论】:
遗憾的是没有简单的方法来指定版本范围,例如~0.2.x
或 >=0.2.0
或其他东西
这至少是我发现的。可能有一种方法,但从文档来看,目前不支持 github 标签版本支持。
@joneshf 现在有办法了。但它是另一个像包管理器一样的“npm”。它称为组件。 github.com/component/component这个支持semver。
当我将新的package.json
推送到 git 存储库时,npm install
似乎没有注意到。它似乎只检查我何时更改 #hash
值。例如,添加或删除 #master
似乎会导致它重新检查。所以我不明白将标签设置为0.1.0
会有什么不同,除非你打算每次都改变它……
我认为应该是"@some/package": "github:some/package^0.1.0"
。【参考方案2】:
手动更新那个特定的包对我有用。
为了自动执行此操作,我将此安装后脚本添加到我的 package.json 中
"scripts":
...
"postinstall": "npm update custom"
【讨论】:
【参考方案3】:按照by @Nestoro 的建议手动更新包也对我有用:
npm update
npm install <your package name>
【讨论】:
以上是关于npm git 存储库不更新版本的主要内容,如果未能解决你的问题,请参考以下文章