子命令 - pack

mcdreforged pack [-h] [-i INPUT] [-o OUTPUT] [-n NAME] [--ignore-patterns IGNORE_PATTERN [IGNORE_PATTERN ...]] [--ignore-file IGNORE_FILE] [--shebang SHEBANG]

将你插件的源文件 / 资源文件打包起来,从一组零散的文件,到一个 .mcdr 格式的 打包插件 文件

打包过程基于输入文件夹中的 mcdreforged.plugin.json 元数据文件。它会也仅会将如下的文件/文件夹打包至打包插件中:

  • 以插件 id 命名的文件夹

  • 文件 mcdreforged.plugin.json

  • 文件 requirements.txt,如果它存在。若你的插件依赖第三方 Python 包,则建议创建此文件,并在其中声明相关的包依赖

  • 于元数据的 resources 属性中列出的文件或文件夹

input

-i INPUT, --input INPUT

输入文件夹,也就是插件所在的文件夹

举个例子,如果你有着如下的文件结构

workplace/
   my_plugin/
       __init__.py
       my_lib.py
   mcdreforged.plugin.json
   requirements.txt

那么文件夹 workplace/ 将会是输入文件夹

默认值:当前所在的文件夹

output

-o OUTPUT, --output OUTPUT

储存生成的打包插件的文件夹

默认值:当前所在的文件夹

name

-n NAME, --name NAME

输出的打包插件文件的特定名称

如果该项的值未被给出,将会使用插件元数据中的 archive_name 属性的值

如果该项的值仍未给出,将会使用默认的命名格式

你可以在你的文件名字符串中使用格式化字符。形如 {arg_name} 的名字将会被自动替换。使用 {{}} 来描述单个 {}

  • id:插件 id

  • version:插件版本

举个例子,在 id=my_pluginversion=1.2.3 的情况下,将会出现下方的格式化过程

  • MyCustomPlugin-release -> MyCustomPlugin-release

  • MyCustomPlugin-v{version} -> MyCustomPlugin-v1.2.3

  • {id}_{version} -> my_plugin_1.2.3

如果该项的值中包含文件扩展名,且该文件扩展名为一个可用的 打包插件 扩展名(.mcdr.pyz),则其中包括的文件扩展名将会被使用。否则,默认扩展名 .mcdr 将会被追加至末尾

ignore patterns

--ignore-patterns IGNORE_PATTERN [IGNORE_PATTERN ...]

一个类似 gitignore 格式的模式串列表,表示一个文件忽略列表,将在打包插件时用于排除文件和文件夹

它支持 .gitignore 语法 的一个子集。下面是一些差异点:

  • 当使用反向匹配的模式串,即以 ! 开头的模式串时,一个文件是否被排除,取决于列表中相对位置最靠后的模式串的类型

  • 不支持后缀空格字符的转义

  • 不支持前缀 # 字符的转义

它将覆盖参数 -\\-ignore-file 提供的值。如果值为空或者文件不存在 / 无法读取,什么都将不会被过滤

注意:用于计算相对路径时的根目录是当前的工作路径,而非 input 中的路径

默认值:空列表

例子:

--ignore-patterns __pycache__ foobar/*.txt **/trash/bin/

在 v2.8.0 版本加入.

ignore file

--ignore-file IGNORE_FILE

指向一格 utf8 编码的类似 gitignore 的文件。文件中的内容将被用作 -\\-ignore-patterns 的参数

默认值:".gitignore",这意味着它将会自动读取当前工作路径下的 .gitignore 文件

下面是一个关于 --ignore-patterns--ignore-file 组合使用时,实际表现的表格:

--ignore-patterns

--ignore-file

表现

未设置

未设置

从 .gitignore 文件中读取忽略列表

未设置

已设置

从给定的文件中读取忽略列表

已设置

未设置

使用 --ignore-patterns 的值

已设置

已设置

使用 --ignore-patterns 的值

在 v2.8.0 版本加入.

shebang

--shebang SHEBANG

在打包插件文件的开头添加以 #! 为前缀的 shebang 行。除此之外,还会在 POSIX 平台上把打包插件文件设为可执行的

默认情况下,不会添加 shebang 行,也不让打包插件可执行

如果你的打包插件是一个合法的 zip app 文件,即它包含一个可用的 __main__.py,你就可以借助此选项,让你的打包插件在 bash 环境中可执行

例子:

--shebang "/usr/bin/env python3"

在 v2.8.0 版本加入.