模块的 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
差异。 - 无论案例 (
CON
,com1
,NuL
,,和很快)。
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
推荐文章: