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.20.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 存储库不更新版本的主要内容,如果未能解决你的问题,请参考以下文章

git上master的更新分支,但缺少新版本

node升级后npm install不能安装新版本

在 npm 中发布新版本的包时出错

Cesium矢量地图插件发布新版本

如何使用 git CLI 获取最新版本

如何将Git存储库转移到另一个主分支