使用 Mix 强制更新包

Forcing package update with Mix

当我使用以下命令时

mix deps.update --all

如果 mix.ex 文件中的包版本未更改,

mix 将使用本地缓存的包。那么问题来了,如何强制mix不使用缓存版本,而是从服务器下载呢?例如,如果某个软件包的最新版本发生了变化,我想选择它们,即使版本没有被提升。

首先,一个已发布的 Hex 包在最初创建后的 1 小时内只能更改,之后它就变得不可变并且永远不会更改。将来,当 Hex 添加用于在发布前测试包的工具时,您将永远无法更改已发布的包。

Hex 执行条件 GET 请求以获取已缓存的包。如果包没有改变我们使用缓存,如果它确实改变了我们再次获取它。如果您无法访问 Hex CDN,它将自动使用可用的缓存包。

此外,每当您获取或更新软件包时,Hex 都会下载所有已发布软件包的注册表,其中包括我们用来验证软件包 tarball 的校验和,因此您将永远无法使用过时的软件包。