模块的 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
发起讨论 只看当前版本


暂无话题~