模块的 zip 包

未匹配的标注

模块版本分为.zip文件。自从go命令创建,下载和从Module代理自动提取 和版本控制存储库。但是,了解这些文件仍然有用,以了解跨平台兼容性约束或实现模块代理时。

go mod下载命令下载一个或多个模块的zip文件,然后将这些文件提取到Module缓存中。取决于GOPROXY和其他环境变量go命令可以从代理下载zip文件或克隆源控制存储库并从中创建ZIP文件。 -JSON标志可用于查找下载ZIP文件的位置及其在模块缓存中的提取内容。

golang.org/x/mod/zip包可用于创建,以编程方式提取或检查ZIP文件的内容。

文件路径和大小约束

模块ZIP文件的内容有许多限制。这些约束确保可以在各种平台上安全且一致地提取ZIP文件。

  • 模块ZIP文件的大小可能为500 MiB 。其文件的总未压缩大小也限于500 MiB 。go.mod文件限制为16 MiB 。许可证文件也限于16 MiB 。存在这些限制,以减轻对模块生态系统的用户,代理和其他部分的拒绝服务攻击。在模块目录树中包含超过500个MiB文件的存储库,应该在提交中标记模块版本,仅包含构建模块包装所需的文件;录像,模型和其他大型资产通常不需要构建。
  • 模块中的每个文件zip文件必须以前缀$module@$version/开头,其中$module是模块路径和 $version是版本例如,golang.org/x/mod@v0.3.0/。模块路径必须有效,版本必须有效和规范,并且版本必须与模块路径的主要版本后缀匹配。有关特定定义和限制,请参阅Module路径和版本
  • 忽略文件模式,时间戳和其他元数据。
  • 空目录(具有斜杠结尾的路径的条目)可以包含在模块zip文件中,但未提取。go命令不包括它创建的zip文件中的空目录。
  • 创建ZIP文件时,符号链接和其他不规则文件将忽略,因为它们不在操作系统和文件系统上携带,并且没有便携方式以ZIP文件格式表示它们。
  • 创建ZIP文件时,名为vendor的目录中的文件,因为从未使用主模块外部外部的vendor目录。
  • 在创建zip文件时忽略包含go.mod文件的目录中的文件,因为它们不是模块的一部分。go命令忽略包含go.mod文件的子目录。
  • 在zip文件中没有两个文件可能在Unicode案例折叠下具有等于的路径(参见strings.EqualFold) 。这可确保在没有冲突的情况下在不敏感的文件系统上可以提取ZIP文件。
  • go.mod文件可能会或可能不会出现在顶级目录中($module@whversion/go.mod)。如果存在,它必须具有go.mod(所有小写)。任何其他目录都不允许命名为go.mod
  • 模块中的文件和目录名称可以由Unicode字母,ASCII数字,ASCII空间字符(U + 0020)和ASCII标点符号!#$%&()+,-.=@[]^_{}~。请注意,包路径可能不包含所有这些字符。请参阅模块module.checkfilepath模块module.checkimportpath 差异。
  • 无论案例(CONcom1NuL,,和很快)。

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/go-mod/1.17/zip...

译文地址:https://learnku.com/docs/go-mod/1.17/zip...

上一篇 下一篇
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~